为什么我的 log4net appender 不以年-月-日结构每天创建一个文件
Why doesn't my log4net appender create a file each day in year-month-day structure
我正在尝试让 log4net 登录到特定文件夹结构中的文件。
[日志文件夹]/year/month/day_file.log
以我现在的配置,初始日志文件是完美的。它创建年份和月份文件夹并以正确的文件开头。
问题是它不会在第二天以我想要的结构创建新文件,而是通过将新日期附加到第一个日志文件名来创建一个新文件。如您所见,它现在也不会创建所需的月份文件夹。
我现在得到的是:
└───2018
└───03
28-03-2018_myLogFile.log
28-03-2018_myLogFile.log28-03-2018
28-03-2018_myLogFile.log29-03-2018
28-03-2018_myLogFile.log30-03-2018
28-03-2018_myLogFile.log31-03-2018
28-03-2018_myLogFile.log01-04-2018
28-03-2018_myLogFile.log02-04-2018
但我需要它:
└───2018
├───03
│ 28-03-2018_myLogFile.log
│ 29-03-2018_myLogFile.log
│ 30-03-2018_myLogFile.log
│ 31-03-2018_myLogFile.log
│
└───04
01-04-2018_myLogFile.log
02-04-2018_myLogFile.log
03-04-2018_myLogFile.log
我现在的配置是这样的:
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/%date{yyyy}/%date{MM}/%date{dd-MM-yyyy}_myLogFile.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="dd-MM-yyyy" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>
我做错了什么?或者我应该通过编写自己的 appender 来解决这个问题?
试试这个。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/%date{yyyy}/%date{MM}/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="dd-MM-yyyy'_myLogFile.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>
我更改了 file type
和 datePattern
值并添加了一行以将 staticLogFileName
设置为 false。
我解决了,但我必须感谢@sgmoore,虽然答案不完整。
以下解决方案在 ../log/yyyy/MM/dd-MM-yyyy_myLogFile.log 结构中创建一个文件。这个版本比@sgmoore 提议的版本更好。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="yyyy/MM/dd-MM-yyyy'_myLogFile.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>
我正在尝试让 log4net 登录到特定文件夹结构中的文件。 [日志文件夹]/year/month/day_file.log
以我现在的配置,初始日志文件是完美的。它创建年份和月份文件夹并以正确的文件开头。 问题是它不会在第二天以我想要的结构创建新文件,而是通过将新日期附加到第一个日志文件名来创建一个新文件。如您所见,它现在也不会创建所需的月份文件夹。
我现在得到的是:
└───2018
└───03
28-03-2018_myLogFile.log
28-03-2018_myLogFile.log28-03-2018
28-03-2018_myLogFile.log29-03-2018
28-03-2018_myLogFile.log30-03-2018
28-03-2018_myLogFile.log31-03-2018
28-03-2018_myLogFile.log01-04-2018
28-03-2018_myLogFile.log02-04-2018
但我需要它:
└───2018
├───03
│ 28-03-2018_myLogFile.log
│ 29-03-2018_myLogFile.log
│ 30-03-2018_myLogFile.log
│ 31-03-2018_myLogFile.log
│
└───04
01-04-2018_myLogFile.log
02-04-2018_myLogFile.log
03-04-2018_myLogFile.log
我现在的配置是这样的:
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/%date{yyyy}/%date{MM}/%date{dd-MM-yyyy}_myLogFile.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="dd-MM-yyyy" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>
我做错了什么?或者我应该通过编写自己的 appender 来解决这个问题?
试试这个。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/%date{yyyy}/%date{MM}/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="dd-MM-yyyy'_myLogFile.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>
我更改了 file type
和 datePattern
值并添加了一行以将 staticLogFileName
设置为 false。
我解决了,但我必须感谢@sgmoore,虽然答案不完整。 以下解决方案在 ../log/yyyy/MM/dd-MM-yyyy_myLogFile.log 结构中创建一个文件。这个版本比@sgmoore 提议的版本更好。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
<file type="log4net.Util.PatternString" value="App_Data/log/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="yyyy/MM/dd-MM-yyyy'_myLogFile.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %M - %message%newline" />
</layout>
</appender>