0

我使用的是旧版本的 log4net:1.2.0.21221。

当我使用新版本的 log4net 时,我能够成功地使用滚动文件附加程序。

使用属性:

log4net.GlobalContext.Properties["LogName"] = string.Concat(fileName, "_", dateTimeInfo, ".log");

log4net.ThreadContext.Properties["Version"] = "1";

XmlConfigurator.Configure();

这些东西在旧版本的 log4net 中是不可用的。如何使用配置文件中定义的滚动文件附加程序?每次启动应用程序时,我都需要一个全新的配置文件名称。

4

1 回答 1

1

您没有理由使用 GlobalContext 来正确命名您的文件。

请参见以下示例:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="FILENAME" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <maximumFileSize value="100KB" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <datePattern value="-yyyyMMddhhmmss'.log'" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>

<file value="..." />是文件名的第一部分。PRE 文件名,如果你愿意的话。再往下看一点<datePattern value="..." />,就是文件名的其余部分。它会附加到您在文件属性中输入的值。在我的示例中,它将输出一个名为FILENAME-20110124090021.log.

如果您注意到我的 datePattern 的最后一部分,它在双引号内包含单引号 '.log',这只是逃避了 datetime 调用评估的任何值。

于 2011-01-24T15:26:18.993 回答