【问题标题】:Log files rotation with .net listeners使用 .net 侦听器进行日志文件轮换
【发布时间】:2010-10-26 10:52:36
【问题描述】:

我有一个现有 .net 服务,我想将其配置为将消息写入日志文件。我在服务配置中添加了以下内容:

<system.diagnostics>
  <sources>
    <source name="My.Service" switchValue="All">
      <listeners>
        <add name="text" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\log.txt" traceOutputOptions="Timestamp"/>
      </listeners>
    </source>
  </sources>
</system.diagnostics>

问题是日志文件很快变得非常大,所以我想知道是否可以配置某种日志轮换。
由于该进程锁定文件以进行写入,因此无法手动旋转它,例如使用脚本定期重命名文件,至少无需停止和重新启动服务。

感谢您的任何建议。

【问题讨论】:

    标签: .net configuration logging


    【解决方案1】:

    我认为FileLogTraceListener 可以解决问题。您可以将其配置为每天或每周间隔。

    如果这还不够,那么您将不得不编写自己的跟踪侦听器,只需从 TraceListener 继承并覆盖写入方法即可。

    【讨论】:

    • 谢谢,这正是我想要的,但我完全错过了!我想知道为什么它是在 Microsoft.VisualBasic 程序集中而不是 System.Diagnostics 中定义的,无论如何,我认为轮换日志是一种相当普遍的需求......
    【解决方案2】:

    也许您可以看看log4net 一个免费且易于使用的.NET 日志库。此库已包含日志轮换。

    否则,您的服务将自动“解锁”文件和/或登录到新文件。

    【讨论】:

    • 看起来很有希望,但这些记录器类可以配置为跟踪侦听器吗?
    • 应该...包含一个 TraceAppender 类。好点,您可以随时扩展库并编写自己的附加程序(= 写入日志的位置和方式)
    • 哦..我忘了提到该库可以通过单独的配置文件完全配置
    【解决方案3】:

    您能否将日志轮换内置到文件名中,以便:

    "c:\log.txt"

    变成:

    "c:\logDDMMYYYY.txt"

    这样日志会在一天结束时自动滚动到新文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 2019-10-02
      • 1970-01-01
      • 2017-11-08
      • 2021-09-16
      • 2015-01-16
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多