登录应用程序的发布版本(C#)

时间:2014-01-09 14:47:46

标签: c# logging release nlog

我在外部研究和StackOverflow/Progammers.StackExchange上都很难找到关于这个主题的信息,所以我想我会问这里。这主要是'最佳实践'问题,但我也对性能影响感兴趣。

背景:
我目前在具有支持Windows服务组件的WinForms应用程序中使用NLog日志记录框架。我在我的测试应用程序中有很多跟踪日志语句,我通过UDP输出监视。错误/警告也会转到事件日志和滚动日志文件,这些文件也包括INFO级别。

问题:
在编译应用程序的发布版本时,处理所有日志记录代码的最佳做法是什么?是否应该从应用程序中删除所有跟踪/调试代码,因为它可能会对性能产生负面影响?由于NLog日志记录由XML配置文件控制,因此删除跟踪/调试日志记录的监听器可以消除潜在的性能缺陷吗?我是否应该在预处理程序指令中放置跟踪/调试日志记录元素,以防止它们被编译为可释放的生产代码?

1 个答案:

答案 0 :(得分:1)

  

处理所有日志记录代码的最佳做法是什么时候   编译应用程序的发布版本?

您可以保留日志记录调用,并使用日志级别控制行为。

  

应该从应用程序中删除所有跟踪/调试代码   会对绩效产生负面影响吗?

你是对的,日志记录会对性能产生负面影响。多少取决于how often you log and the logging output。您应该将日志记录限制为关键内容,这有助于诊断某些事项或排除问题/异常。

  

由于NLog日志记录由XML配置文件控制,因此   删除侦听器以进行跟踪/调试日志记录消除了潜力   性能陷阱?

是。如果您将日志级别设置为Off,那么您将获得性能。例如,因为没有IO操作了。唯一的成本是检查日志框架中的loglevels。​​

  

我是否应该在其中放置跟踪/调试日志记录元素   预处理程序指令,以防止它们被编译成可释放的   生产代码?

这将再次提高性能。但是,您无法获得生产中的任何诊断信息以解决问题。使用日志级别时,这是可能的。

相关问题