2017-03-29 2 views
0

Wir haben unter Logger Konfiguration in worker.xml Sturm Cluster erstelltBenutzerdefinierte Log4j2 appender arbeitet nicht mit Sturm

 <!-- This is new appender we want to add --> 
    <FDPRollingFile name="RollingFileInfo" filename="${sys:storm.log.dir}/userlogs/info-${sys:logfile.name}" 
     filepattern="${sys:storm.log.dir}/userlogs/info-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true"> 
      <PatternLayout> 
      <pattern>${patternFdpNew}</pattern> 
      </PatternLayout> 
      <Policies> 
       <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB --> 
      </Policies> 
     </FDPRollingFile> 
    <FDPRollingFile name="RollingFileDebug" filename="${sys:storm.log.dir}/userlogs/debug-${sys:logfile.name}" 
      filepattern="${sys:storm.log.dir}/userlogs/debug-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true"> 
      <PatternLayout> 
      <pattern>${patternFdpNew}</pattern> 
      </PatternLayout> 
      <Policies> 
       <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB --> 
      </Policies> 
    </FDPRollingFile> 
    <FDPRollingFile name="RollingFileError" filename="${sys:storm.log.dir}/userlogs/error-${sys:logfile.name}" 
      filepattern="${sys:storm.log.dir}/userlogs/error-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true"> 
     <PatternLayout> 
      <pattern>${patternFdpNew}</pattern> 
     </PatternLayout> 
     <Policies> 
      <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB --> 
     </Policies> 
    </FDPRollingFile> 
<!-- This is new appender we want to add --> 

und benutzerdefinierte Logger in folgenden Art und Weise definiert

<Logger name="custom-logger" additivity="false" level="INFO"> 
    <appender-ref ref="RollingFileDebug" level="TRACE"/> 
    <appender-ref ref="RollingFileError" level="WARN"/> 
    <appender-ref ref="RollingFileInfo" level="INFO"/> 
    </Logger> 

In Sturm Topologie-Generator Hauptklasse

config.put("topology.classpath","/usr/local/Cellar/storm/mylogger.jar"); 

und im Auslauf

 private static org.slf4j.Logger _logger = LoggerFactory.getLogger("custom- logger"); 

Nun, was passiert, es erkennt mein Glas und schreiben Sie eine Zeile der Protokolldatei, aber Post, die keine Zeile in die Protokolldatei protokolliert.

+0

Es gibt nur einen Auslauf in der Topologie für jetzt und konfiguriert mit 2 Executoren. –

+0

Auch Standard-Logger, wenn wir keine benutzerdefinierte Logger verwenden, ist in der Lage, jede Logzeile wie üblich in Datei zu protokollieren –

Antwort

0
  1. Das name-Attribut des Logger-Elements sollte Ihr Paketname sein. Sind Sie sicher, dass "custom-logger" korrekt ist?

  2. Wenn Sie slf4j in Ihrem Code verwenden, müssen Sie log4j2 slf4j Bindung zu Ihrem Klassenpfad hinzufügen, siehe this für weitere Details.

Ich hoffe, es hilft.

+0

Danke für die Antwort. custom-logger ist nur ein Name für den Logger. Wir versuchen unseren eigenen Log-Appender im Sturm zu verwenden. So bezieht sich Custom-Logger auf unsere Appender. Wird auf log4j2 slf4j Bindung überprüfen. –

Verwandte Themen