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

Application logging best practices - How to manage logging statements strewn all over your code?

我刚刚在 Whosebug 上阅读了 this post 并且我没有看到日志记录的一个方面。独立于特定的日志记录框架,人们如何处理这样一个事实,即大多数方法会导致 logging/trace 语句遍布整个代码,这使得实际查看代码库的内容变得更加困难。这只是生活的现实还是有 techniques/mechanisms 来解决这个问题,例如:

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

最终,如果您想要 logging/tracing 在您的应用程序中,那么在您的源代码中就无法逃避该代码。

理论上,您可以使用面向方面的编程 (AOP) 工具,例如 PostSharp 来挂钩 logging/tracing 调用,但要注意方法中的调用跟踪,例如

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

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

对于 "hide" 从视图中看到的内容,您无能为力。理论上你可以有一个用 Conditional 属性修饰的方法...

[Conditional("DEBUG")]
public void Trace(string message)
{
    Trace.WriteLine(message);
}

...以便从 release 构建中删除该方法及其调用。但是,如果您需要为代码的发布版本进行日志记录,那不是很有帮助!