应用程序日志记录最佳实践 - 如何管理遍布代码的日志记录语句?

时间:2015-06-18 15:42:28

标签: .net visual-studio debugging logging tracing

我刚刚阅读了Stackoverflow上的this帖子,并且记录的一个方面是我没有看到解决的问题。独立于特定的日志记录框架,人们如何处理大多数方法导致在整个代码中放置日志记录/跟踪语句的事实,这使得实际查看代码库的含义变得更加困难。这只是生活的现实,还是有解决这个问题的技巧/机制,例如:

  • 选择性隐藏和显示所有日志记录和跟踪语句的方法
  • 使用启用日志记录的类或方法属性
  • ...?

我在.NET / Visual studio工作,但我想我的问题一般适用。

1 个答案:

答案 0 :(得分:1)

最终,如果您希望在应用中进行日志记录/跟踪,那么您的源代码中就不会有代码转发。

理论上,您可以使用面向方面编程(AOP)工具(例如PostSharp)来挂钩日志记录/跟踪调用,但可以考虑在方法中调用跟踪,例如。

public void Foo()
{
    Trace.WriteLine("About to call web service");

    Trace.WriteLine("Updating database with data");
}

你无能为力"隐藏"那些来自视野。从理论上讲,您可以使用Conditional属性...

进行修饰的方法
[Conditional("DEBUG")]
public void Trace(string message)
{
    Trace.WriteLine(message);
}

...以便从release版本中删除该方法并调用它。但是,如果您需要为代码的发布版本进行日志记录,那么这并不是非常有用!