2017-12-04 25 views
0

내 프로젝트에 log4net.config라고 AA 파일을 생성하고 다음과 같은 구성에 추가 : 그 후log4net 파일 또는 콘솔 (외부 log4net.config 파일) 로그 로깅되지

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 
    <appender name="console" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
     <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

을, 나는 아래의 라인을 추가 내 AssemblyInfo.cs 파일 :

: 응용 프로그램에서

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

, 나는 다음과 같은 정적 클래스가

(3210)가 그럼 난 Logger.LogDebug("Error logger working.");

그러나 사용하여 다른 클래스의 응용 프로그램 어딘가에서 로그인을 시도하고있어, 나는 어떤 로그 파일이 생성되거나 기록되는 것을 볼 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

는 UPDATE :

나는 또한

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 
+0

ACL 문제를 제거하고 $ {LOCALAPPDATA} \ ...을 C : \ TEMP \ LogFile.log로 변경하고 작동하는지 확인하십시오. – lloyd

+0

@lloyd는 변경 후에도 여전히 작동하지 않습니다. – swdon

+0

아마도 log4net을 제거하고 한 번에 각 구성 요소를 추가하십시오. – lloyd

답변

1

... 내 app.config 파일에 다음하지만 난 내 출력 콘솔에 전혀 아무것도 볼 추가 당신은 log4net 로깅 구성에서 log4net 구성이있는 경우 파일을 사용하는 경우 web.config (구성 태그 및 섹션)의 구성을 추가 할 필요가 없습니다. 그냥 log4net 태그를 추가하십시오 :

<log4net> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> 
<appender name="console" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %level %logger - %message%newline" /> 
    </layout> 
</appender> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
    <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
    </layout> 
</appender> 
</log4net> 
+0

** 구성을 추가하지 않아도 되지만 ** 원인이없는 것 같습니다. 문제가 생기면 – sgmoore

-1

실수를 재현 할 수 없습니다. AssemblyInfo에서 log4net을 설정하면 정상적으로 작동합니다. 어쩌면 구성상의 문제 일 수 있습니다. 나에게 또 다른 구현 당신에게

private static readonly ILog log = LogManager.GetLogger("myLogger"); 
    private static string configFile = "log4net.config"; 
    static Logger() 
    { 
     XmlConfigurator.Configure(new FileInfo(configFile)); 
    } 

log4net.config을 보여주지 :

<log4net> 
<logger name="myLogger"> 
    <level value="ALL" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="RollingFileAppender" /> 
</logger> 
<appender name="console" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %level %logger - %message%newline" /> 
    </layout> 
</appender> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
    <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
    </layout> 
</appender> 
</log4net> 
+0

log4net을 구성하는 유일한 방법은 아니며 log4net 어셈블리 속성을 사용하여 OP에 필요하지 않아야합니다 (https://logging.apache.org/ 참조). log4net/release/manual/configuration.html # attributes). – sgmoore

+0

@sgmoore는 의견을 보내 주셔서 감사합니다. 구성과 관련하여 작성자 메시지가 누락되었습니다. –

0

stuartd의 의견에 문제 덕분에 찾을 수 있었다. 제 문제는 제 전체 솔루션에 2 개의 프로젝트가 있다는 것입니다. log4net에 대해 하나의 프로젝트 (시작 프로젝트가 아님) 만 구성했습니다.

원래 log4net 구성은 실수가 없습니다. 나는 log4net 레퍼런스를 프로젝트 시작에 추가하고 log4net 구성을 프로젝트에 추가하기 만하면 로깅을 시작했다.

내 설정을 테스트 한 모든 사람들에게 많은 감사를드립니다.