Log4Net 创建新文件

Log4Net creates new files

我们有一个单线程的旧应用程序,我们 运行 它有多个实例。我注意到它创建了多个具有奇怪命名的日志。

PASManifest-EDWWhatIfDbg.20180918-17.log PASManifest-EDWWhatIfDbg.20180918-17.20180918-17.log.log PASManifest-EDWWhatIfDbg.20180918-17.20180918-17.20180918-17.log.log.log 问题是,我们有重用这些日志的程序,它们对日志名称非常敏感。 有没有办法配置 log4net,使其只创建和使用 PASManifest-EDWWhatIfDbg.20180918-17.log

  <appender name="EDWWhatIfDebugFile" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString">
    <conversionPattern value="D:\centralAM\Logs\EDWWhatIf\PASManifest-EDWWhatIfDbg"/>
  </file>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <appendToFile value="true" />
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <rollingStyle value="Date" />
  <datePattern value="'.'yyyyMMdd-HH'.log'" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%5thread] %-5level %type{1}.%method() - %message%newline%exception" />
  </layout>
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="DEBUG" />
    <levelMax value="DEBUG" />
  </filter>
</appender>

我怀疑 preserveLogFileNameExtension 设置干扰了您的日期模式。我建议您将文件扩展名移动到 file 属性。比如像这样:

<file value="D:\centralAM\Logs\EDWWhatIf\PASManifest-EDWWhatIfDbg" />
<datePattern value="yyyyMMdd-HH" />
<staticLogFileName value="false" />

不能 100% 确定它是否会起作用,因为我没有测试它。