質問

リリースモードでアプリケーションをコンパイルしたとき、Log4Netは引き続きデバッグ情報を記録することがわかりました。これを修正する方法はありますか?

これは私のApp.Configファイルです:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\Documents and Settings\test\Application Data\Log.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} - %m%n" />
      </layout>
    </appender>
  </log4net>

何か見落としましたか?

役に立ちましたか?

解決

App.Configファイルには、リリースモードまたはデバッグモードでlog4netに異なる処理を行うように指示するものは何もありません。 2つのビルド間でロギングを異なるようにするには、2つのビルド間で構成ファイルを変更する必要があります。

おそらく、リリース用に1つ、デバッグ用に1つのApp.Configを作成し、StackOverflowの質問のアドバイスに従うことをお勧めします。

注:リリースとデバッグApp.Configの違いは、デバッグバージョンでは次の行になります

<level value="DEBUG" />

リリースバージョンの次の行(または、必要に応じてERRORまたはFATALを選択できます):

<level value="INFO" />

他のヒント

代わりにこのようなものを試してみませんか?受け取りたい最低レベルに設定します。

<level value="WARN" />

App.Configが次のような場合:

    <root>
      <level value="Info" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingFileAppender" />
    </root>

ログレベルはコードで変更できます(Program.csにコードを入力します):


#if DEBUG
            log4net.Repository.ILoggerRepository RootRep;
            RootRep = LogManager.GetRepository(Assembly.GetCallingAssembly());

            XmlElement section = ConfigurationManager.GetSection("log4net") as XmlElement;

            XPathNavigator navigator = section.CreateNavigator();

            XPathNodeIterator nodes = navigator.Select("root/level");
            foreach (XPathNavigator appender in nodes)
            {
                appender.MoveToAttribute("value", string.Empty);
                appender.SetValue("Debug");
            }

            IXmlRepositoryConfigurator xmlCon = RootRep as IXmlRepositoryConfigurator;
            xmlCon.Configure(section);
#endif

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top