Log4j2: Wie schreiben Sie-Protokolle in separaten Dateien für jeden Benutzer?
Hier ist die Herausforderung, die ich konfrontiert:
Ich habe ein servlet-Programm. Und ich brauche zum schreiben von Protokollen für jeden Benutzer den Ordner mit dem Namen Benutzer.
So etwas wie dieses:
//stores message to David folder
///root_path/David/logfile.log
logger.error(MarkerManager.getMarker("David"), "Error happened");
//stores message to Mark folder
///root_path/Mark/logfile.log
logger.error(MarkerManager.getMarker("Mark"), "Something is broken");
In meinem Beispiel verwendete ich Marker. Aber ich weiß wirklich nicht, ob Marker, die geeignet für diese Aufgabe.
Im Allgemeinen meine appender Verhalten sollte, wie RollingRandomAccessFile Appen.
Ich denke mal die config für die appender muss etwas Aussehen wie dieses:
<RollingRandomAccessFile name="rollingFile"
fileName="logs/{markerName ?????}/movie-db.log"
filePattern="logs/log-%d{yyyy-MM-dd}-%i.log.zip"
append="false"
immediateFlush="false"
ignoreExceptions="true">
<PatternLayout pattern="%d{ISO8601} %level{length=5} [%thread] %logger - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="25 MB"/>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dank @Remko Popma Antwort, die ich es herausfinden. Hier ist die Lösung Beispiel:
Und log4j.xml:
Die Log4j2 FAQ-Seite hat ein Beispiel, die RoutingAppender um dies zu erreichen.