6

別のアプリケーションのサードパーティ dll として使用する dll をセットアップしています。外部アプリケーションが何もセットアップする必要がないように、この dll に独自のロギングを持たせたい (私たちと同じロギングを使用するとは思わない)。それは最善の解決策ではないかもしれないと読みましたが、それが私に与えられた仕事です。これで log4net を使用したいと考えています。ここで他のいくつかの質問を見てきましたが、コードを介して構成可能であると述べていますが、私が抱えている主な問題は、log4net を構成するための明確なエントリ ポイントがコードにないことです。dll 自体を構成することを放棄し、dll のログを構成するセカンダリ アプリケーションによって呼び出されるメソッドを使用する必要があるかどうか、またはこれを行うためのより良い方法があるかどうかに興味があります。

4

1 に答える 1

10

プログラムで log4net を構成できます。おそらく、このコードを DLL のコンストラクターに追加してください。

if (!log4net.LogManager.GetRepository().Configured)
{
    // my DLL is referenced by web service applications to log SOAP requests before
    // execution is passed to the web method itself, so I load the log4net.config
    // file that resides in the web application root folder
    var configFileDirectory = (new DirectoryInfo(TraceExtension.AssemblyDirectory)).Parent; // not the bin folder but up one level
    var configFile = new FileInfo(configFileDirectory.FullName + "\\log4net.config");

    if (!configFile.Exists)
    {
        throw new FileLoadException(String.Format("The configuration file {0} does not exist", configFile));
    }

    log4net.Config.XmlConfigurator.Configure(configFile);
}
于 2014-06-02T16:03:55.470 に答える