你有更好的方法来创建日志吗?

本文关键字:创建 日志 方法 更好 | 更新日期: 2023-09-27 18:03:17

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

TextWriter tw = new StreamWriter(@"C:'AS-log.txt", true);
tw.WriteLine("ValidateMetaData");
tw.Close();
像这样的

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

  1. 当日志记录的行数比实际代码多时,代码看起来非常混乱。
  2. 我希望能够通过配置文件开关登录。

有什么建议的方式记录,可以做到这一点,仍然是简单的?

你有更好的方法来创建日志吗?

也许你可以试试微软的企业库。它有一个日志应用程序块,工作得很好

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

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

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

建议使用log4Net。它有一个巨大的潜力,您可能不需要,但可以在日志条目中提供简单的预定义格式。

在使用它之前,您应该将其配置为应用程序的.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>

问候。

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

System.Diagnosics.Trace.WriteLine("ValidateMetaData");

这也允许你观看DebugView等的直播

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

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

  • http://logging.apache.org/log4net/
  • http://nlog-project.org/

如果您想从config-file中获得内置和可配置的内容,请参阅http://msdn.microsoft.com/en-us/library/ms228993.aspx