您是否有更好的方法来创建日志

时间:2011-07-25 11:59:42

标签: c# logging

我有一个相当大的程序偶尔有一些奇怪的行为。在客户部署后,无法进行调试。但是允许使用日志文件,所以这就是我创建的。像这样:

TextWriter tw = new StreamWriter(@"C:\AS-log.txt", true);
tw.WriteLine("ValidateMetaData");
tw.Close();

这样的3行已经插入到许多地方的代码中,并提供了很好的日志信息。然而,这种方法存在两个问题:

  1. 当有关日志的行数多于实际代码时,代码看起来非常混乱。
  2. 我希望能够通过配置文件切换开启和关闭日志。
  3. 对日志记录方式的任何建议可以做到这一点并且仍然很简单吗?

7 个答案:

答案 0 :(得分:4)

Log4net是一个可以使用的简单框架。

http://logging.apache.org/log4net/

答案 1 :(得分:4)

也许您可以尝试Microsoft的Enterprise库。它有一个非常好的日志应用程序块

http://msdn.microsoft.com/en-us/library/ff648951.aspx

答案 2 :(得分:3)

我建议使用log4Net。它具有巨大的潜力,您可能不需要,但在loog条目中为您提供简单的预定义格式。

在使用之前,yuo应该将其配置为应用程序的.config文件。

这只是一个例子,你可以使用其他很容易在互联网上找到的人:

<log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\\TestLog.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
      </layout>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

问候。

答案 3 :(得分:2)

您可以使用System.Diagnostics.Debug和System.Diagnostics.Trace的监听器。 通常这些是由编译选项控制的,但您可以根据配置选项附加监听器。

System.Diagnosics.Trace.WriteLine( “ValidateMetaData”);

这也允许您使用DebugView等进行实时观看

答案 4 :(得分:1)

一个简单的解决方案是让日志写一个类。在应用程序启动时,它会打开要写入的文件,并且有一个简单的方法Write。然后,您可以简单地使用Log.Write("ValidateMetaData")来减少内联使用的代码量,并停止必须始终打开和关闭文件。您还可以根据配置添加检查(最简单的方法是使用应用程序设置)。

答案 5 :(得分:0)

尝试log4net或nlog(我更喜欢nlog)

答案 6 :(得分:0)

如果你想要内置的东西,可以从config-file配置,请参阅http://msdn.microsoft.com/en-us/library/ms228993.aspx