我如何让 Log4Net 创建一个简单的 file.log,并在新日期开始时将其重命名为 file-dd-mm-yyyy.log?

How can i make Log4Net create a simple file.log, and rename it to file-dd-mm-yyyy.log at the start of a new date?

所以我希望今天的日志文件完全清除文件名中的所有日期格式,这样总能很容易找到今天的日志文件。但是我希望在新的一天开始后用日期戳重命名旧的日志文件。

所以日志文件夹看起来像这样:

log.log (<- 今天的日志文件)
log-16.02.2016.log
log-15.02.2016.log

默认文件附加程序无法做到这一点,但您可以使用 Rolling File Appender 并根据日期滚动它们。这不会像当前的 appender 那样考虑应用程序重启。

添加一个新的 appender,然后更新根记录器以使用这个:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender, Sitecore.Logging">
  <file value="logfile" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
  </layout>
</appender>
<root>
  <priority value="INFO" />
  <appender-ref ref="RollingLogFileAppender" />
</root>

另一种方法是重命名默认文件附加程序的文件名格式:

<file value="$(dataFolder)/logs/{date}.log.txt" />

这将使您可以更轻松地对日志文件进行排序(和分组)。您可以在 this blog post.

中找到更多想法

我相信您还需要使 staticLogFileName = false。我一直在使用这种模式成功地生成类似 myLogFilePrefix 的文件。20160124.log

<appender name="MyFileAppender" type="log4net.Appender.RollingFileAppender">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <file type="log4net.Util.PatternString" value="C:\Logs\myLogFilePrefix" />
        <appendToFile value="true" />
        <rollingStyle value="Date" />
        <datePattern value=".yyyyMMdd.lo'g'" />
        <staticLogFileName value ="false" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
        </layout>
</appender>

或者您可以使用

<file type="log4net.Util.PatternString" value="C:\Logs\log-%date{yyyyMMdd}.log" />

但它不会每天滚动,仅在开始应用时滚动。