Ich verwende java.util.logging für Protokollierungs- und Protokollierungszwecke. Wie kann ich innerhalb einer Java-Anwendung die Datei, auf die das Protokoll geschrieben werden soll, dynamisch festlegen?Programmgesteuertes Festlegen der Zieladresse für java.util.logging
8
A
Antwort
1
Sprechen Sie über JULog?
Wenn ja, ist die Antwort "Sie können nicht". Um die Datei zu ändern, in der Sie sich anmelden (oder etwas anderes in der Konfiguration ändern), müssen Sie wissen, welche zugrunde liegende Logging-Implementierung Sie verwenden und warum Sie JULog verwenden sollten (durchaus diskutierbar, außer Sie entwickeln eine Bibliothek)) ist nicht ANY Bindungen Logging-Implementierungen.
Wenn die Auswahl einer Datei zur Laufzeit eine Voraussetzung ist, werden Sie wahrscheinlich besser mit einer konkreten Implementierung wie Log4j gehen.
8
Die java.util.logging.FileHandler
könnte ihre Arbeit für Sie erledigen. Der folgende Codeausschnitt zeigt ein einfaches Beispiel, wie die Protokollierung Ziel programmatisch tun gesetzt:
Logger logger = Logger.getLogger("my.logger.name");
try {
FileHandler handler = new FileHandler("application.log", true);
logger.addHandler(handler);
} catch (IOException e) {
throw new IllegalStateException("Could not add file handler.", e);
}
logger.info("Hello Logger!");
(nb: diese Antwort für die originale, unbearbeitete Frage war „Einstellen Juli logging“/„Ich bin mit Juli Protokollierung .. . ") Anstelle von Log4j könnte dies mithilfe von Logback erreicht werden (verwenden Sie slf4j, um die gesamte Protokollierung auf Logback umzuleiten); siehe http://stackoverflow.com/questions/3803184/setting-logback-appender-path-programmatically (aber immer noch, es ist eine schlechte Idee; es gibt verschiedene Logback-Appender/Policies, die die Ausgabedatei kontrollieren, so dass die Log-Konfiguration beibehalten werden kann in der XML-Konfiguration, wo es gehört) – michael