2017-03-27 5 views
0

このアプリケーション(CMS)の場合、Log4netはConfig/log4net.configで設定されています。Log4.net - 実行時にフォルダセットにログする方法は?

実行時にログファイルを動的に配置する場所のパスを設定する必要があります。

IはGlobal.asaxの(及びOnApplicationStarting)するために、次のコードを追加しようとしている

log4net.GlobalContext.Properties["path"] = "testlog"; 
log4net.Config.XmlConfigurator.Configure(); 

プラスそれが作成で始まるlog4net.config

<file type="log4net.Util.PatternString" value="c:\Logs\%property{path}\AppLog.log" /> 

に設定を変更ディレクトリc:\Logs\(null)\AppLog.log - ロギングを開始し、しばらくしてから希望のディレクトリ(c:\Logs\testlog\AppLog.log)を作成して続行します■このディレクトリにログインします。

ロギングが開始される前にフックすることができないようです。どのように私がそれを行うべきかについての解決策またはアイデアを持っている誰も - 私は最初に(ヌル)ディレクトリを取得していませんか?

何とかweb.configに設定された値にアクセスし、これをフォルダ名の動的部分として使用できますか?

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

AssemblyInfo.csにし、ロガーを取得する前にプロパティを追加します。

+0

ことで任意の進歩? –

答えて

1

あなたはこれを配置する必要があります。ここ は実施例である:

マイ設定:

<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender"> 
      <file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/> 
      <appendToFile value="true"/> 
      <rollingStyle value="Size"/> 
      <maximumFileSize value="10MB"/> 
      <maxSizeRollBackups value="5"/> 
      <staticLogFileName value="true"/> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/> 
      </layout> 
     </appender> 

とC#コード:

using System; 

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

namespace Log4NetConsoleApplication 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      log4net.GlobalContext.Properties["LogFileName"] = "log";  

      log4net.ILog log = LogHelper.GetLogger(); 

      Console.WriteLine("hello world"); 

      log.Error("This is my error message"); 

      Console.ReadLine(); 
     } 
    } 
} 
関連する問題