how to configure static log file name with compositely named roll backups
Asked Answered
G

3

8

I used this config but a date is always added to the current file ('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>

The result of that config is :

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

What I get with staticLogFileName = true is :

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

What I want is :

log.log
log.20130805.1.log
log.20130805.2.log
log.20130805.3.log
Gadwall answered 5/8, 2013 at 16:25 Comment(0)
O
8

I know I'm late to the party, but I believe I have figured out how to use a composite RollingFileAppender properly. I'm posting it here for posterity, in case anyone stumbles upon this in a search:

<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>

The key here is:

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

When your current log files are being appended, you'll see:

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

Once the new day hits, those should be renamed to:

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

and you'll have a new logfile.log, still catching your current logs.

Odometer answered 23/6, 2020 at 19:43 Comment(0)
E
0

You can use the function below. This function first gets the file location that you set in web.config and after that you can add any path that you want! (like Date or Customer or...)

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>

Function:

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;
        }
    }
}

and result is like this: C:\t4\TestProject\Customer1\Saturday, August 31, 2013.log

Exuberate answered 1/9, 2013 at 9:25 Comment(1)
In the WebConfig You create a RollingFileAppender and in the function you loop over Appenders, of corse this will not workNovelia
S
0

Based on these tips I guess it isn't possible, unfortunately (with the current implementation of RollingFileAppender):

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

Schulte answered 13/3, 2014 at 14:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.