Ich baue eine Anwendung, die Protokolldateien tails. Dazu lese ich die Konfiguration der Datei logback.xml, wähle einen Appender nach dem Namen und entpacke die notwendigen Informationen der Datei zu Ende und formatiere die darin enthaltenen Nachrichten.Suche nach der Logdatei mit dem Logback-Appender
Momentan kann ich nur Protokolldateien mit einem festgelegten Dateinamen beenden, und ich versuche, Dateien mit einem strukturierten Dateinamen zu beenden. Aber um diese komplexe Prüfung aller möglichen Muster zu vermeiden, habe ich darüber nachgedacht, den Wert der Datei aus der Logger-Klasse selbst zu extrahieren. Nach der Untersuchung fand ich, dass die Klasse eine Methode namens getActiveFileName() hat, die ich vermute, dass was ich brauche (der Dateiname der Protokolldatei im Moment der Methode aufgerufen wird), aber aus irgendeinem Grund kann ich nicht einmal finde den Logger für seinen Namen. Wer hat schon mal so etwas probiert oder weiß, ob es überhaupt möglich ist?
Mein aktueller logback (die wichtigen Bits):
<appender name="DateRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/jwsgateway.%d{yyyyMMddHH}.log.zip</fileNamePattern>
<maxHistory>1500</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{dd/MM/yy HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %m%n </pattern>
</encoder>
Mein aktueller Code:
private static ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(MyClass.class);
RollingFileAppender appender=(RollingFileAppender)logger.getAppender("DateRollingFileAppender");
filePath=appender.getRollingPolicy().getActiveFileName();
Die Variable "appender" endet null. Irgendwelche Vorschläge?
Das machte. Es funktioniert wie beabsichtigt. Vielen Dank! – KatVolkov