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

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 に答える
0

これらのヒントに基づいて、残念ながらそれは不可能だと思います (現在の RollingFileAppender の実装では):

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

于 2014-03-13T14:27:55.227 に答える