2017-11-24 11 views
0

를 사용하여 Nlog 있으며 logLevel를 제어하고 작동하지 않습니다 방법 : 예 LOG_LEVEL이 LogLevel.Info환경 변수를 사용하여 Nlog 구성에서 LogLevel에를 무시하려고 노력하는 환경 변수

같은 설정으로 설정되어

<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="level >= '${environment:LOG_LEVEL}' " action="Ignore"/> 
      </filters>  
</logger> 

Nlog Env var 작품 :

<variable name="myvar1" value="LogLevel.Info"/> 
<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="level >= '${myvar1}' " action="Ignore"/> 
      </filters>  
</logger> 

어떤 힌트를 어떻게 env 변수를 사용합니까? 약간의 확장 기능을 쓸까요?

+0

InternalLogger를 활성화하고 오류/예외를 찾으려고 했습니까? 런타임에 환경 변수를 변경하면 응용 프로그램을 다시 시작할 때까지 효과가 나타나지 않습니다. –

+0

그래, 토큰 파싱 문제가있는 추적을 보았습니다. NLog가 지원하지 않는 것 같습니다. 2017-11-24 16 : 12 : 09.4999 'ConditionBasedFilter.condition'을 'level> = $ {environment : LOG_LEVEL}'(으)로 디버그 설정 ' 2017-11-24 16 : 12 : 09.4999 속성'Condition 'NLog.Filters.ConditionBasedFilter'예외 : NLog.Conditions.ConditionParseException : 유효하지 않은 구두점 : NLog.Conditions.ConditionTokenizer.GetNextToken()에서 $ '' – lenisha

+0

아마도 NLog 변수를 값에 할당하는 것이 좋습니다. $ {environment : LOG_LEVEL}을 (를) 찾은 다음 when-filter?에서 NLog 변수를 사용하십시오. –

답변

0

나는이 좀 더 말의 알지만, 사람이 적절한 수정을 만들 때까지 어쩌면 그것은 작동합니다 Btw는

<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="(level >= LogLevel.Fatal and equals('${environment:LOG_LEVEL}','LogLevel.Fatal)" action="Log"/> 
       <when condition="(level >= LogLevel.Error and equals('${environment:LOG_LEVEL}','LogLevel.Error')" action="Log"/> 
       <when condition="(level >= LogLevel.Info and equals('${environment:LOG_LEVEL}','LogLevel.Info')" action="Log"/> 
       <when condition="(level >= LogLevel.Debug and equals('${environment:LOG_LEVEL}','LogLevel.Debug')" action="Log"/> 
       <when condition="(level >= LogLevel.Trace and equals('${environment:LOG_LEVEL}','LogLevel.Trace')" action="Log"/> 
      </filters>  
</logger> 

. 왜 원래의 질문에보다 큰 것보다 적은 것 인 지 궁금한가요? LOG_LEVEL을 Warn으로 설정할 때 예상 할 수있는 모든 경고 또는 악조건을 기록해야합니다.