2011-01-14 21 views
9

私はlog4netを使用してエラーを記録しています。すべて web.configなしでlog4netを使用

<log4net> 

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="c:\Log4NetExample.log"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
    </layout> 
</appender> 

<root> 

    <level value="All"/> 

    <appender-ref ref="LogFileAppender"/> 
</root> 

web.configファイルで

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

protected void Application_Start(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 
protected void Application_Error(object sender, EventArgs e) 
{ 
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError()); 
} 

また、これらの変更が行われました。

は現在、私はglobal.asaxファイルに次の変更を行った後、ファイルlog4net.dllをダウンロード私が必要とするのは、コードをweb.configから移動し、代わりにテキストファイルから読み込むことです。

また、私は誰もこれで私を助けることができるデバッグおよびエラーの2つのレベル...

が必要ですか?

はありがとう

+0

http://geekswithblogs.net/bsherwin/archive/2008/02/15/119657.aspx – kenny

答えて

15

あなたのAssemblyInfo.csファイルでこの属性を入れて:

[assembly:log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config",Watch=true)] 

「Log4net.config」は、あなたの設定ファイルの名前に相当します。

もちろん、同じ効果を達成する他の方法があります。たとえば、web.configに設定セクションハンドラを設定したままにすることができます。このように、独自のXMLファイルに要素を移動し、空の要素をweb.configファイルでそれを置き換える:

<log4net configSource="c:\config\myLog4NetConfig.xml" /> 

をconfigSource属性は、外部ファイルの場所を提供する(ただし、UNCパスすることはできませんそれはマシンにローカルでなければなりません)。

log4netを設定する限り、これはちょっとしたものです。ヘルプと例については、これらのリンクを参照してください。

+1

私はlog4net構成ファイルを別に持っているのが好きです。なぜなら、web.configファイルを更新した場合に起こるような、アセンブリのリロードを強制することなくモードをすばやく変更できるからです。 –

+1

Log4Net.configのビルド設定が "Copy if newer"になっていることを確認してください。特にコンソールプロジェクトの場合。 –

+0

相対パスはどうですか? ''と書くことはできますか? –

1

これはあなたが望むものであるならば、私は知りませんが、あなたは正確にはXMLでlog4netのを、txtファイルに同じlog4netのXML構成情報を入れて、それを自分で読み、[初期化することができます。

ここでは、プログラムでlog4netをxmlで設定する方法については、this questionを参照してください。この例では、xmlをlog4net API経由でlog4netに直接送信するように表示しています。あなたのケースで欠けているのは、それをテキストファイルから読むことだけです。 web.configからlog4net xml構成情報をコピーしてテキストファイルに貼り付けると、ファイルから読み込み、例に示すようにlog4netに送信できるはずです。

log4netのログ設定をweb.configとは別のファイルにしたいのであれば、log4netではlog4net構成情報のみを含む別のファイルを指定できます(これはもっと標準的な作業です上記の私の例より)。

ASP.NETアプリケーションの場合の例については、this questionを参照してください。

関連する問題