2016-10-10 2 views
0

콘솔 응용 프로그램에 예외를 기록하려고합니다. 나는 항상 모든 일을했다 (그리고 그것은 나를 위해 일한 ...) :Nlog 로그 파일이 생성되지 않았습니다.

NLog.config :

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 
autoReload="true" 
throwExceptions="false" 
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 
    <targets> 
    <target name="LogFile" xsi:type="File" 
       fileName="${basedir}/Log/${date:format=yyyyMMdd} myLog.txt" 
       layout="${longdate}|${level:uppercase=true}|${message}|${exception}" /> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Debug" writeTo="LogFile" /> 
    </rules> 
</nlog> 
class Program 
{ 
    private static Logger _log = LogManager.GetCurrentClassLogger(); 

    static void Main(string[] args) 
    { 
     _log.Error("test"); 
    } 
} 

일부 신비한 이유 파일의 경우 내 컴퓨터에 아무 곳에도 생성되지 않습니다 . 어떤 아이디어가 그 이유가 무엇입니까

답변

1

설정이 유효하므로 문제가되지 않아야합니다.

어떤 것들은 확인 :

  1. 이 올바른 디렉토리에 nlog.config인가? 테스트하는 가장 좋은 방법은 nlog.config를 .dll 또는 .exe가있는 디렉토리에 복사하는 것입니다. throwExceptions="true"

  2. internalLogLevel="Info"을 설정하여 내부 로그를 확인하고 "C : \ 임시 \ nlog-internal.log는"확인 :

  • 오류가 Nlog에 의해 캡처되지 않습니다 있는지 확인하기 위해 예외를 사용

    문제 해결을위한 전체 자습서는 NLog documentation에서 찾을 수 있습니다.

  • 0

    NLog 설정을 편집하고 이와 같이 로그 파일 경로를 변경하려면 {date:format=yyyyMMdd} 대신 ${shortdate}을 사용하십시오. 규칙에 이름을 설정하고이 샘플 에서처럼 호출하십시오.

    <?xml version="1.0" encoding="utf-8"?> 
    
    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <targets async="true"> 
        <targets> 
         <target name="LogFile" xsi:type="File" 
           fileName="${basedir}/Log/${shortdate}myLog.txt" 
           layout="${longdate}|${level:uppercase=true}|${message}|${exception}" /> 
        </targets> 
    
        <rules> 
         <logger name="ErrorLog" minlevel="Trace" writeTo="LogFile" /> 
        </rules> 
    </nlog> 
    

    그리고 당신의 .cs

    그래서 당신은 명명 된 로거 로깅 클래스 기반 로깅에서 전환 제안하는
    class Program 
    { 
    
        private Logger ErrorLogger = NLog.LogManager.GetLogger("ErrorLog"); 
    
        static void Main(string[] args) 
        { 
         ErrorLogger.Error("test"); 
        } 
    } 
    
    +0

    - 여기에 문제 이럴 안 ... 또한,이 당신의 명명에서 불일치 :'ErrorFile' 대'ErrorLog'. –

    +0

    아주 잘 작동하는 유일한 샘플입니다. 모든 것을 로깅하기 위해 fileName 경로를 변경하고 날짜 형식의 일부를 변경하고 TRACE로 레벨을 변경하는 것이 좋습니다. –

    관련 문제