2009-03-13 11 views
4

として構築されている場合、私はlog4netのを使用して働いているプロジェクトがあり、それは素晴らしい作品が、私は、私はルートのためのXML設定を上書きできるかどうかを知りたい「レベル」属性をlog4netのルートレベルの変更しますデバッグおよびリリース時のログは用アプリがリリース

現在、私のルート設定は次のようになります。

<root> 
    <level value="WARN"/> 
    <appender-ref ref="LogFileAppender"/> 
    <appender-ref ref="DebugAppender"/> 
</root> 

そして、私のWebアプリケーションのGlobal.asaxクラスで、私は、ルートログレベルを変更するには

protected override void Application_Start(object sender, EventArgs e) { 
    base.Application_Start(sender, e); 
    XmlConfigurator.Configure(); 

    #if DEBUG 
    //Change logging level to DEBUG 
    #endif 
} 

で何かを包むことができ考えていましたソリューションがデバッグでビルドされたときにデバッグします。

可能これは、私が欲しいものに私のアイデア、ベストプラクティスのタイプのsoltuionあり、そしてどのように私はそれを行うだろう(あるいは、あなたがより良い、それをどのように行うのでしょうか)?

答えて

6

私は、opositeを行うデバッグモードで私は私のために、関連するメッセージをフィルタリングするための優れている開発者の構成を使用します。そして、リリースモードでは、私は、ユーザーが自分のコードをハックしたい防ぐために警告するレベルをロック(彼は他の方法のトンを使用することができますが、これは5秒のトリックです):

public static void Initialize() 
{ 

#if DEBUG 
    ConfigureAndWatch(); 
#else 
    ConfigureAndLockChanges(); 
#endif 

} 

#if DEBUG 

private static void ConfigureAndWatch() 
{ 
    XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config")); 
} 

#else 

private static void ConfigureAndLockChanges() 
{ 
    // Disable using DEBUG mode in Release mode (to make harder to hack) 
    XmlConfigurator.Configure(new FileInfo("log4net.config")); 
    foreach (ILoggerRepository repository in LogManager.GetAllRepositories()) 
    { 
     repository.Threshold = Level.Warn; 
    } 
} 

#endif 
+0

こんにちはサンディエゴ、提供することができますユーザーがコードをハックするシナリオの例 – Ricky

+1

こんにちは、リッキーは、それがセキュリティ手段として使用されることを期待しないでください。私は、ユーザーがシステムの動作を簡単に知ることができる重要な情報を記録するのを避けるだけです。もちろんRedGateのReflectorやそのようなツールを使っている人は誰でも見ることができます。 平均的なユーザーが何かをしようとすることを防ぎます。しかし、高度な.NET開発者はこの「セキュリティ」対策をバイパスすることができます。 –

関連する問題