我有以下log4net配置:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd} Service.log" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="15MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger: %message%newline" />
</layout>
</appender>
数据会不断记录到日志文件中并滚动好,但我最终会滚动这样的文件:
2009-12-21 Service.log2009-12-22 (this is what it will write tonight)
2009-12-21 Service.log <-- this being the latest file
2009-12-21 Service.log2009-12-21 <-- last updated 23:59
我希望文件像:
2009-12-21 Service.log
2009-12-22 Service.log
2009-12-23 Service.log
答案 0 :(得分:1)
删除文件名和文件元素中的类型:
<file value="Logs\" />
然后将datePattern更改为(注意:请确保您正确地转义'Service'中的字母,就像'log'中的g是一种特殊格式,因此您需要使用'\'来转义它:)
<datePattern value="yyyy-MM-dd Service.lo\g"/>
答案 1 :(得分:0)
我认为以下内容应该是您所需要的。
在&lt; appender /&gt;。
中添加以下元素<staticLogFileName value="true" />
答案 2 :(得分:0)
您可以使用以下功能。 在此函数中,首先获取您在webconfig中设置的文件位置,之后您可以添加所需的任何路径! (如日期,我们的客户,或......)
WebConfig:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\\t4\\"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="_yyyy-MM-dd.lo'g'"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date User:%identity IP:%X{addr} Browser: %X{browser} Url: %X{url} [%thread] %-5level %c:%m%n"/>
</layout>
</appender>
功能:
public static void ChangeFileLocation(string _CustomerName,string _Project)
{
XmlConfigurator.Configure();
log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();
foreach (IAppender a in h.Root.Appenders)
{
if (a is FileAppender)
{
FileAppender fa = (FileAppender)a;
string sNowDate= DateTime.Now.ToLongDateString();
// Programmatically set this to the desired location here
string FileLocationinWebConfig = fa.File;
string logFileLocation = FileLocationinWebConfig + _Project + "\\" + _CustomerName + "\\" + sNowDate + ".log";
fa.File = logFileLocation;
fa.ActivateOptions();
break;
}
}
}
结果如下:C:\Logs\TestProject\Customer1\Saturday, August 31, 2013.log