Konfigurieren Sie log4Net so, dass Sie SMTP Appender nicht verwenden, wenn Sie einen bestimmten Computer ausführen

StackOverflow https://stackoverflow.com/questions/620248

  •  03-07-2019
  •  | 
  •  

Frage

Ich richte einen SMPTAppender für E -Mail -Protokolldateien ein, wenn ein Fehler im Produktionscode vorliegt. Es gibt einige Maschinen wie Testmaschinen, die lokal sind und die E -Mail nicht gesendet haben.

Ich habe versucht, den Umgebungsvariablen -Computername in einem PropertyFilter zu verwenden, aber das funktionierte nicht:

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

Ich habe CompuNername in einem Datei -Appender wie folgt verwendet:

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

Dies hat auch nicht funktioniert (auch nicht erwartet):

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

Gibt es eine Möglichkeit, Umgebungsvariablen in einem Eigenschaftsfilter zu verwenden? Andere Vorschläge willkommen.

War es hilfreich?

Lösung

Sie verwenden den falschen Schlüsselwert. Die Sammlung von LoggingEvent.Properties ist mit der Eigenschaft Hostname mit der Signatur "log4Net: hostname" bevölkert.

Ihr Filter sollte so aussehen:

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

Hinweis auch zur Verwendung von AcceptonMatch, nicht akzeptiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top