1

現在、開発環境と本番環境の 2 つの環境で実行できるアプリケーションを開発しています。それぞれに異なるロギング インフラストラクチャが必要です。

環境は、実行時に .exe に渡されます。コードを使用してそれぞれのアペンダーを有効/無効にするにはどうすればよいですか? 以下の構成にも微調整するものはありますか?

この app.config ファイルには、 thisに基づいて各キーに「prod」値と「dev」値を与えるアプリケーション設定用の他のコンテンツがあるため、複数の構成ファイルは必要ありません。

<log4net>

    <root>
      <level value="debug" />
      <appender-ref ref="Dev" />
      <appender-ref ref="Prod" />
    </root>

    <appender name="Dev" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="blabla 1" />
      <layout type="log4net.Layout.PatternLayout">
        <Header value="[Application Start]&#13;&#10;" />
        <Footer value="[Application Exit]&#13;&#10;"  />
        <ConversionPattern value="%date (%property{ActiveStatus}) %-5level [%2thread] %-20.20logger{1} %message%newline" />
      </layout>
    </appender>

    <appender name="Prod" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="blabla 2" />
      <layout type="log4net.Layout.PatternLayout">
        <Header value="[Application Start]&#13;&#10;" />
        <Footer value="[Application Exit]&#13;&#10;"  />
        <ConversionPattern value="%date (%property{ActiveStatus}) %-5level [%2thread] %-20.20logger{1} %message%newline" />
      </layout>
    </appender>

</log4net>
4

4 に答える 4

6

app.configパブリッシュ先の環境に基づいて、ファイルの変換を検討することをお勧めします。これは Web アプリケーションではかなり一般的ですが、他のプロジェクト タイプに拡張する方法を説明する SO があります。

Visual Studio 2010 の Web プロジェクトではないプロジェクトの App.Config 変換?

于 2012-04-26T13:53:08.677 に答える
4

環境ごとに個別の構成ファイルを作成し、実行時に適切な構成ファイルをロードすることをお勧めします。このようにして、開発固有の設定が本番アペンダーに適用されたなどのような時折のエラーを維持し、回避することが容易になります。

if (environment == "Production")
{
   log4net.Config.Configure(Path.Combine(productionFolder, "log4net.config"));
}
于 2012-04-26T13:52:49.757 に答える
1

私はsllの提案に投票します。ただし、アペンダーの 1 つを無効にすることを主張する場合:

ILoggerRepository repository = log4net.LogManager.GetRepository();
var appender = repository.GetAppenders()
    .Where(a => a.Name == "dev")
    .Single();
appender.Close();
于 2012-04-26T14:35:31.477 に答える
-2

おそらくタグ<threshold value="OFF"/> を使用して、代わりに変更しますか??

このままコメントアウト

<!-- <threshold value="OFF"/> -->

ロギングを有効にする必要がある場合

于 2012-04-26T13:48:47.937 に答える