8

我使用了此配置,但始终将日期添加到当前文件('log.20130805.0.log')中。

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs/logFile.log" />
    <appendToFile value="true" />
    <preserveLogFileNameExtension value="true" />
    <rollingStyle value="Composite" />
    <datePattern value=".yyyyMMdd" />
    <maximumFileSize value="10MB" />
    <countDirection value="1"/>
    <maxSizeRollBackups value="-1" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
</appender>

该配置的结果是:

log.20130805.0.log
log.20130805.1.log
log.20130805.2.log
log.20130805.3.log

我用 staticLogFileName = true 得到的是:

log.log
log.1.log
log.2.log
log.3.log

我想要的是:

log.log
log.20130805.1.log
log.20130805.2.log
log.20130805.3.log
4

3 回答 3

4

我知道我迟到了,但我相信我已经弄清楚如何正确使用复合 RollingFileAppender。我将其发布在这里以供后代使用,以防有人在搜索中偶然发现:

<appender name="rollingfileappender" type="log4net.Appender.RollingFileAppender">
    <file value="C:\Logs\logfile.log" />
    <datePattern value=".yyyyMMdd" />
    <preserveLogFileNameExtension value="true" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100Kb" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.DynamicPatternLayout">
        <conversionPattern value="%[level] - %date - %message" />
    </layout>
</appender>

这里的关键是:

<preserveLogFileNameExtension value="true" /><staticLogFileName value="true" />

当您当前的日志文件被追加时,您将看到:

logfile.log
logfile.1.log
logfile.2.log
etc...

一旦新的一天到来,那些应该重命名为:

logfile.20200623.log
logfile.20200623.1.log
logfile.20200623.2.log
etc...

并且您将拥有一个新的 logfile.log,仍会捕获您当前的日志。

于 2020-06-23T19:43:11.407 回答
0

基于这些提示,我想这是不可能的,不幸的是(使用当前的 RollingFileAppender 实现):

http://geekswithblogs.net/rgupta/archive/2009/03/03/tips-on-using-log4net-rollingfileappender.aspx

于 2014-03-13T14:27:55.227 回答
0

您可以使用以下功能。此函数首先获取您在 web.config 中设置的文件位置,然后您可以添加任何您想要的路径!(如日期或客户或...)

网络配置:

<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:\t4\TestProject\Customer1\Saturday, August 31, 2013.log

于 2013-09-01T09:25:07.150 回答