質問

app.configファイルとlog4net.configファイルが別々のWindowsサービスがあります。ロギングが機能していません。

app.configファイルでは、セクションに次のものがあります:

<add key="log4net.Config" value="log4net.config"/>

これは、値にlog4net.configファイルへの絶対パスを指定した場合に機能します。

log4net.congへの絶対パスを指定する必要がありますか? log4net.configファイルとapp.configファイルは両方とも、実行可能ファイルと同じフォルダーにあります。

アイデアはありますか

パラグラフ

役に立ちましたか?

解決

これは役に立つかもしれません( web.configからLog4Net設定を削除するASP.NET 2.0 Webサイトで。)。

ここにあなたが興味があるかもしれない部分があります:

  

構成するアプリケーションを教えてください   この設定ファイルを使用してlog4net。そこ   これには本当に2つのスポットがあります。最初、   global.asaxおよび2番目   assemblyInfo.csファイル。注意してください、そのほとんど   で始まる時間の   すべてのコードを含むglobal.asaxファイル   列をなして。何らかの理由で、唯一の   これを機能させる方法は   global.asaxを分割して使用します   コードビハインドしてから   assemblyInfo.csファイル。それで終わります   このように見えます。

     

global.asax:   <!> lt;%@ Application Language = <!> quot; C#<!> quot; Inherits = <!> quot; GlobalAsax <!> quot; %<!> gt;   global.asax.cs(App_Codeフォルダー内):

using System;
using System.Web;

public class GlobalAsax : HttpApplication
{
    // you may have lots of other code here
    void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}
  

これでアプリケーションができました   log4netの構成を呼び出すと、   アセンブリに属性を設定できます   log4netがどこへ行くかを知るための情報   構成ファイルを探します。   AssemblyInfo.csApp_Code   フォルダー):

     

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

     

監視フラグは、log4netに   構成ファイルに注目   潜在的な変化。これは次の場合に役立ちます   構成を変更したい   すべてのログからエラーまでのみ   テストの途中で。

log4net.configが常にそこにあることを確認するには、log4net.configをcsprojectに追加し、CopyAlwaysに設定します。デバッグフォルダーに表示する必要があります。

スクリプトを使用してすべてをリリースフォルダーにコピーするか、MSセットアッププロジェクトを使用している場合は、そのファイルをプロジェクトに手動で追加します。その後、参照が追加されます。

他のヒント

Windowsサービスの場合、現在のディレクトリはWindows \ system32です。XmlConfigurator.Configure()はFileInfoを使用して、現在のディレクトリに対する相対パスを処理します。そのため、log4netはWindows \ system32で設定ファイルを探しています。

一方、

XmlConfiguratorAttributeはアプリケーションのBaseDirectoryを使用します。これが常に機能する理由です。

別の方法として、XmlConfigurator.Configure()を呼び出す前に次のことを実行できます。

System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top