[JAVA] Ich möchte die Generierung / Öffnung einer Protokolldatei mit log4j # FileAppender verknüpfen

Ich frage mich, ob Bedarf besteht (´ ´ ω ・ `). Wenn Sie das Timing festlegen möchten, wenn eine Protokolldatei in FileAppender generiert oder geöffnet wird, wird die Klasse, die FileAppender erbt und setFile überschreibt, in log4j.Appender geändert. Angeben.

Wenn Sie beispielsweise die Protokolldatei für jedes Datum wechseln möchten, insbesondere "sample.log.20180211" für das Protokoll vom 11. Februar 2018 und "sample". Für das Protokoll vom 12. Februar 2018. Wenn Sie in log.20180212aufnehmen möchten, bereiten Sie die folgende Originaldatei undlog4j.properties` vor.

log4j.properties


log4j.logger.sample=DEBUG, SAMPLE
log4j.appender.SAMPLE=sample.logger.SampleFileAppender
log4j.appender.SAMPLE.File=C:\\logging\\sample.log
log4j.appender.SAMPLE.Append=true
log4j.appender.SAMPLE.layout=org.apache.log4j.PatternLayout
log4j.appender.SAMPLE.layout.ConversionPattern=%d %p %m %n

SampleFileAppender.java


package sample.logger;

import org.apache.log4j.FileAppender;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class SampleFileAppender extends FileAppender {

    @Override
    synchronized public void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) throws IOException {
        Path path = Paths.get(fileName);
        String baseName = path.getFileName() + "." + DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now());
        super.setFile(Paths.get(path.getParent().toString(), baseName).toString(), append, bufferedIO, bufferSize);
    }

}

Wenn Sie sorgfältig darüber nachdenken, reicht "DailyRollingFileAppender" für diesen Zweck aus (´ ´ ω ・ `). Es tut mir leid, dass es keine gute Probe ist (´ ・ ω ・ `).

Recommended Posts

Ich möchte die Generierung / Öffnung einer Protokolldatei mit log4j # FileAppender verknüpfen
Ich möchte eine bestimmte Datei mit WatchService überwachen
[Eclipse] Ich möchte dieselbe Datei zweimal öffnen. [Split-Editor]
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte Java8 für jeden mit Index verwenden
Ich möchte mit Firestore von Rails spielen
Ich möchte die Aggregationsverarbeitung mit Spring-Batch durchführen
[Rails] Ich möchte CSS mit Webpacker laden
Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich möchte eine TraceId in das Protokoll einbetten
Protokoll mit slf4j + Logback mit Maven in externe Datei ausgeben
Ich möchte den Dunkelmodus mit der SWT-App verwenden
Ich möchte Benutzer mit Devise + OmniAuth bei Rails authentifizieren
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich möchte die Protokollausgabe unter Android vereinfachen
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich möchte manuell eine Autorisierungs-E-Mail mit Devise senden
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Ich möchte den Startbefehl mit Docker-Compose an Postgres übergeben.
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Ich möchte Zeichen konvertieren ...
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte SONY Kopfhörer WH-1000XM4 mit LDAC mit Ubuntu 20.04 verbinden! !!
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ich möchte Spring Local Time mit MySQL Time (auch Millisekunden) einfügen.
Ich möchte OutOfMemory bei der Ausgabe großer Dateien mit POI vermeiden
Versuchen Sie, mit JRuby eine plattformübergreifende Anwendung zu erstellen (Generierung von JAR-Dateien).
So öffnen Sie eine Skriptdatei von Ubuntu mit VS-Code
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
[Entwicklungsprotokoll ⑮] Ich möchte einen externen Link oder PDF-Link hinzufügen
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
Ich möchte eine asynchrone Verarbeitung und periodische Ausführung mit Rail durchführen !!!
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren
Ich möchte eine Servlet-War-Datei mit OpenJDK unter CentOS7 erstellen. Ohne mvn. Ohne Internetverbindung.
Ich möchte eine Datei mit Ruby im Internet herunterladen und lokal speichern (mit Vorsicht).
Ich habe versucht, mit Java zu interagieren
Protokollausgabe in Datei in Java
Aktivieren Sie die Protokollausgabe sowohl für Dateien als auch für die Konsole mit log4j in Eclipse.
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)