Diese Protokollausgabemethode dient zur Ausgabe des Protokolls zum Zeitpunkt der Stapelausführung und wird nicht empfohlen, da in der WEB-Anwendung usw. Protokollrot usw. vorhanden sind. Es ist besser, Log4j gehorsam zu verwenden.
In einem System, in dem Log4j aus irgendeinem Grund nicht verwendet werden kann (ich weiß nicht, ob es überhaupt enthalten ist), wurde mir jedoch gesagt, dass "Protokolle System.out.println () sein können", und ich dachte "Warte eine Minute", also werde ich es zusammenfassen. .. Gewöhnliche Leute benutzen es nicht.
public class BatchLogFomatter extends SimpleFormatter {
public String format(LogRecord logRecord) {
final StringBuffer stringBuffer = new StringBuffer();
//Datumsformat
//Diese Charge sollte keine threadbewusste Charge sein,
//Ich mache mir Sorgen, es in eine Klassenvariable zu setzen, also schreibe es im Format
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
stringBuffer.append(dateFormat.format(new Date(logRecord.getMillis())));
stringBuffer.append(" ");
Level level = logRecord.getLevel();
//Aus irgendeinem Grund werden FINE und darunter nicht angezeigt. Stellen Sie daher vorerst nur FINE und darunter ein.
//Die Namen wurden in CONF, INFO, WARN und ERROR geändert.
//Anzeigeeinstellungen (DEBUG)=Sagen wir CONF.
if (level == Level.FINEST) {
stringBuffer.append("FINEST");
} else if (level == Level.FINER) {
stringBuffer.append("FINER ");
} else if (level == Level.FINE) {
stringBuffer.append("FINE ");
} else if (level == Level.CONFIG) {
stringBuffer.append("CONF");
} else if (level == Level.INFO) {
stringBuffer.append("INFO ");
} else if (level == Level.WARNING) {
stringBuffer.append("WARN ");
} else if (level == Level.SEVERE) {
stringBuffer.append("ERROR ");
}
stringBuffer.append(" ");
//Der Klassenname wird eingegeben (ich weiß nicht, was es hier ist)
stringBuffer.append(logRecord.getLoggerName());
stringBuffer.append(" - ");
//Nachricht wird angezeigt
stringBuffer.append(logRecord.getMessage());
//Vergessen Sie nicht die Zeilenumbrüche.
stringBuffer.append("\n");
// 2017-10-05 18:52:57.592 INFO hoge.FugaBatch -Starten Sie die Stapelausführung
//Ich bekomme ein Protokoll wie
return stringBuffer.toString();
}
}
public class LogTest {
static final Logger logger = Logger.getLogger(LogTest.class.getName());
static {
ConsoleHandler handler = new ConsoleHandler();
//Protokollstufe ändern
//Selbst wenn es ALLES ist, kommt die folgende FEIN nicht heraus ...
handler.setLevel(Level.ALL);
handler.setFormatter(new BatchLogFomatter());
logger.addHandler(handler);
//Wenn dies nicht enthalten ist, wird das Protokoll dupliziert
logger.setUseParentHandlers(false);
}
public static void main (String[] args) {
logger.info("Raus mit INFO");
}
}
Da es sich um eine Stapelausführung handelt, ist die Protokolldatei immer getrennt. Machen Sie sich also keine Gedanken über die Details Ich versuche nur das Protokoll auszugeben. Gibt es einen besseren Weg, um ein Protokoll zu erhalten?
Recommended Posts