日志文件与.net侦听器的循环

日志文件与.net侦听器的循环,.net,configuration,logging,.net,Configuration,Logging,我有一个现有的.net服务,我想将其配置为将消息写入日志文件。我在服务配置中添加了以下内容: <system.diagnostics> <sources> <source name="My.Service" switchValue="All"> <listeners> <add name="text" type="System.Diagnostics.TextWriterTraceListener" i

我有一个现有的.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>

问题是日志文件很快变得非常大,因此我想知道是否可以配置某种日志循环。
由于进程锁定文件以进行写入,因此无法手动旋转文件,例如使用脚本定期重命名文件,至少在不停止并重新启动服务的情况下是如此


谢谢你的建议。

你能在文件名中加入日志循环吗

“c:\log.txt”

变成:

“c:\logDDMMYYYY.txt”


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

也许您可以看看免费且易于使用的.NET日志库。此库已包含日志旋转

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

我认为有一种方法可以做到这一点。您可以将其配置为每日或每周间隔


如果这还不够,那么您必须编写自己的tracelistener,只需从tracelistener继承并重写写入方法。

看起来很有希望,但这些记录器类是否可以配置为跟踪侦听器?它应该…包含一个TracePender类。好的一点是,你可以随时扩展库并编写自己的附加器(=日志的写入位置和方式)哦..我忘了提到库是通过单独的配置文件完全可配置的谢谢,这正是我想要的,但我完全错过了它!我想知道为什么它是在Microsoft.VisualBasic程序集中定义的,而不是在System.Diagnostics中定义的。无论如何,我认为循环日志是一种相当普遍的需要。。。