0

私はこのようなことをしたい:

<script RunAt="server">

private static log4net.ILog _logger = null;
public static log4net.ILog Logger
{ get { return _logger; } }

protected void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    log4net.Config.XmlConfigurator.Configure();
    _logger = log4net.LogManager.GetLogger("DtWebLogger");
}

....
</script>

この後、すべてのページで同じロガーオブジェクトを使用できるのではないかと思います。

それで、これは可能ですか?またはロガーのグローバルインスタンスをどこでインスタンス化できますか?

4

3 に答える 3

2

Loggerのグローバルインスタンスは必要ありません。むしろ、クラスごとに1つ必要です。ログに記録する各クラスには、次のようなものが必要です。

private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass));

タイプ情報は、ロガー出力の一部として使用されます。ILogをラップし、StackFrameから現在のクラスの型をプルするコンストラクターを提供する独自のクラスを作成することもできます。

于 2012-05-30T03:33:47.380 に答える
0

初期化は正しく、log4net.LogManager.GetLoggerはすでに1つのインスタンスを使用しており、再度実行する必要はありません。

于 2012-05-30T03:33:26.350 に答える
0

プロパティとして宣言し、次のように使用できます。

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

述べたように、グローバルロガーは必要ありません。ネストされたスコープを宣言します。

于 2018-08-02T12:05:07.503 に答える