문제

릴리스 모드에서 응용 프로그램을 컴파일하면 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에게 릴리스 또는 디버그 모드에서 다르게 작업을 수행하도록 지시하는 것은 없습니다. 두 빌드간에 로깅이 다르려면 두 빌드간에 구성 파일을 변경해야합니다.

가장 좋은 방법은 아마도 릴리스를 위해 하나의 app.config, 디버그 용으로 하나의 app.config를 만들고 stackoverflow 질문의 조언을 따르는 것입니다.

참고 : 릴리스와 디버그 앱의 차이점은 디버그 버전의 다음 줄입니다.

<level value="DEBUG" />

릴리스 버전의 다음 줄 대 (또는 원하는 경우 오류 또는 치명적일 수 있음) :

<level value="INFO" />

다른 팁

대신 이런 식으로 시도해 볼까요? 받고 싶은 최소 수준으로 설정하십시오.

<level value="WARN" />

app.config가 다음과 같습니다.

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

코드별로 로그 레벨을 수정할 수 있습니다 (코드를 프로그램에 넣음) :


#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