【问题标题】:How do I roll on max files with a log4net RollingFileAppender that uses a parameterized name?如何使用使用参数化名称的 log4net RollingFileAppender 滚动最大文件?
【发布时间】:2011-10-23 11:16:07
【问题描述】:

我有一个使用 log4net 的 RollingFileAppender 并且可以多次实例化的客户端应用程序。最初我已经将所有日志写入一个文件,但是,我很快意识到 log4net 在写入时会锁定文件,但是,即使我使用less restrictive 写入模式,我仍然会得到很多我的日志文件乱七八糟。

我决定将 process-id 合并到文件名中,如下所示:

<appender name="HumanRollingLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="Log\TestLog[%processid].txt"/>
  <param name="DatePattern" value="dd.MM.yyyy'.log'"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <staticLogFileName value="true" />
  <maxSizeRollBackups value="10"/>
  <maximumFileSize value="1KB"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%type] [%thread] %-5level %logger - %message%newline%exception%"/>
  </layout>
</appender> 

那行得通。但是,它完全弄乱了滚动功能,因为现在每个进程都会产生自己的日志文件,实际滚动只会在进程 ID 开始重复之后发生。例如,启动我的应用程序 3 次导致创建以下日志:

TestLog[5396].txt
TestLog[5396].txt.1
TestLog[5396].txt.10
TestLog[5396].txt.2
TestLog[5396].txt.3
TestLog[5396].txt.4
TestLog[5396].txt.5
TestLog[5396].txt.6
TestLog[5396].txt.7
TestLog[5396].txt.8
TestLog[5396].txt.9
TestLog[5976].txt
TestLog[5976].txt.1
TestLog[5976].txt.10
TestLog[5976].txt.2
TestLog[5976].txt.3
TestLog[5976].txt.4
TestLog[5976].txt.5
TestLog[5976].txt.6
TestLog[5976].txt.7
TestLog[5976].txt.8
TestLog[5976].txt.9
TestLog[6860].txt
TestLog[6860].txt.1
TestLog[6860].txt.10
TestLog[6860].txt.2
TestLog[6860].txt.3
TestLog[6860].txt.4
TestLog[6860].txt.5
TestLog[6860].txt.6
TestLog[6860].txt.7
TestLog[6860].txt.8
TestLog[6860].txt.9

有人知道我可以做些什么来解决这个问题吗?我想让每个进程都有自己的文件,但我不能允许在所有进程之间重用滚动。

谢谢!

【问题讨论】:

    标签: c# .net log4net


    【解决方案1】:

    如果您坚持在日志文件的名称中使用进程标识符,那么内置的滚动模式将永远无法工作。我想了解您的要求。 “我的日志文件中仍然会出现很多混乱”的真正含义是什么?您想从日志文件中得到什么答案?

    解决不同问题的方法是将进程 ID 附加到日志消息中,然后使用众多可用工具之一进行过滤/搜索(log4net dashboardlog4net viewerApache ChainsawMicrosoft LogParser,或Kiwi LogViewer

    【讨论】:

    • 我最终只是使用自己的日志文件来清除旧的日志文件,并使用 RollingAppender 来实现其最初的目标:限制单个日志文件的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多