生产和开发log4net配置?

BuZ*_*uZz 0 c# log4net

我正在开发一些可以在两种环境中运行的应用程序:开发或生产.我希望每个都有不同的日志记录基础结构.

环境在运行时传递给我的.exe.如何通过代码启用/禁用相应的appender?在下面的配置中是否还有调整内容?

我在这个app.config文件中有其他内容用于应用程序设置,为每个键提供一个"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>
Run Code Online (Sandbox Code Playgroud)

Kha*_*han 6

您可能希望app.config根据要发布到的环境对文件进行转换.这在Web应用程序中非常常见,但有一个SO解释了如何将其扩展到其他项目类型:

App.Config转换为Visual Studio 2010中不是Web项目的项目?