我试图让log4net登录到特定文件夹结构中的文件。 [logfolder] /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来解决这个问题吗?
答案 0 :(得分:2)
试试这个。
<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。
答案 1 :(得分:1)
我解决了它,但我必须赞扬@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>