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 und
log4j.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