2009-03-06 11 views
5

Konfiguruję SMPTAppender do wysyłania plików dziennika w przypadku wystąpienia błędu w kodzie produkcyjnym. Jest kilka maszyn, takich jak maszyny testowe, które są lokalne, gdzie nie chcę e-maila wysłanego.Skonfiguruj Log4Net tak, aby nie używał aplikacji dostarczającej smtp, jeśli działa pewna maszyna.

Próbowałem użyć zmiennej środowiskowej COMPUTERNAME w propertyfilter, ale to nie działa:

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

użyłem NazwaKomputera w pliku appender tak:

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

to również nie działa (nie oczekiwałem):

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

Czy istnieje sposób użycia e zmienne środowiskowe w filtrze właściwości? Inne sugestie mile widziane.

Odpowiedz

5

Używasz niewłaściwej wartości Key. Kolekcja LoggingEvent.Properties zawiera właściwość HostName, która ma podpis "log4net: HostName".

Twój filtr powinien wyglądać następująco:

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

Uwaga również użyć AcceptOnMatch nie Akceptuj.