2009-03-06 9 views
5

프로덕션 코드에 오류가있을 때 로그 파일을 전자 메일로 보내도록 SMPTAppender를 설정 중입니다. 로컬 인 테스트 컴퓨터와 같이 전자 메일을 보내지 않으려는 일부 컴퓨터가 있습니다. Log4Net에서 특정 시스템을 실행 중일 때 smtp appender를 사용하지 않도록 설정하십시오.

은 내가 propertyfilter에서 환경 변수 컴퓨터 이름을 사용하려고하지만,이 작동하지 않았다 : 또한

<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" /> 

이 :이 같은 파일 펜더에서 컴퓨터 이름을 사용했다

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="COMPUTERNAME" /> 
    <StringToMatch value="myComputerName" /> 
    <Accept value="false" /> 
</filter> 

을 작동하지 않았고 (기대하지도 않았다) :

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="${COMPUTERNAME}" /> 
    <StringToMatch value="myComputerName" /> 
    <Accept value="false" /> 
</filter> 

전자를 사용할 방법이 있습니까? 속성 필터의 nvironment 변수? 다른 제안을 환영합니다.

답변

5

잘못된 키 값을 사용하고 있습니다. LoggingEvent.Properties 컬렉션은 "log4net : HostName"서명이있는 HostName 속성으로 채워집니다.

귀하의 필터는 다음과 같아야합니다 또한

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="log4net:HostName" /> 
    <StringToMatch value="computerToExclude" /> 
    <AcceptOnMatch value="false" /> 
</filter> 

참고 수락, AcceptOnMatch를 사용하지 않을 수 있습니다.