Ich habe eine Situation, in der ich alle von mir erstellten Protokolle in eine Textdatei schreiben möchte.
Wir verwenden die API java.util.logging.Logger, um die Protokolle zu generieren.
Ich habe es versucht:
private static Logger logger = Logger.getLogger(className.class.getName());
FileHandler fh;
fh = new FileHandler("C:/className.log");
logger.addHandler(fh);
Aber ich bekomme meine Logs immer noch nur auf der Konsole ...
Antworten:
Probieren Sie dieses Beispiel aus. Für mich geht das.
Erzeugt die Ausgabe in MyLogFile.log
Bearbeiten:
Verwenden Sie zum Entfernen des Konsolenhandlers
da der ConsoleHandler beim übergeordneten Logger registriert ist, von dem alle Logger abgeleitet sind.
quelle
FileHandler(path, true)
, um das Protokoll an eine vorhandene Protokolldatei anzuhängen.Erstens, wo haben Sie Ihren Logger definiert und von welcher Klasse \ Methode, die versucht hat, ihn aufzurufen? Es gibt ein Arbeitsbeispiel, frisch gebacken:
In Ihrem Code haben Sie vergessen, den Formatierer zu definieren. Wenn Sie einen einfachen benötigen, können Sie dies wie oben erwähnt tun. Es gibt jedoch eine andere Option. Sie können ihn selbst formatieren. Es gibt ein Beispiel (fügen Sie ihn einfach anstelle dieser Zeile fh ein .setFormatter (neuer SimpleFormatter ()) folgenden Code):
Oder jede andere Modifikation, was auch immer Sie möchten. Ich hoffe es hilft.
quelle
Der Speicherort der Protokolldatei kann über die Datei logging.properties gesteuert werden. Und es kann als JVM-Parameter übergeben werden, z.
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Details: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm
Konfigurieren des Dateihandlers
Um Protokolle an eine Datei zu senden, fügen Sie FileHandler zur handlers-Eigenschaft in der Datei logging.properties hinzu. Dadurch wird die Dateiprotokollierung global aktiviert.
handlers= java.util.logging.FileHandler
Konfigurieren Sie den Handler, indem Sie die folgenden Eigenschaften festlegen:java.util.logging.FileHandler.pattern gibt den Speicherort und das Muster der Ausgabedatei an. Die Standardeinstellung ist Ihr Home-Verzeichnis.
java.util.logging.FileHandler.limit gibt in Bytes die maximale Menge an, die der Logger in eine Datei schreibt.
java.util.logging.FileHandler.count gibt an, wie viele Ausgabedateien durchlaufen werden sollen.
java.util.logging.FileHandler.formatter gibt die Formatierungsklasse java.util.logging an, die die Dateihandlerklasse zum Formatieren der Protokollnachrichten verwendet. SimpleFormatter schreibt kurze "lesbare" Zusammenfassungen von Protokolldatensätzen.
So weisen Sie Java an, diese Konfigurationsdatei anstelle von $ JDK_HOME / jre / lib / logging.properties zu verwenden:
quelle
Eine gute Bibliothek namens log4j für Java .
Dies bietet zahlreiche Funktionen. Gehen Sie durch den Link und Sie werden Ihre Lösung finden.
quelle
Vielleicht ist es das, was du brauchst ...
quelle
quelle
quelle
Hoffe, die Leute finden das hilfreich
quelle
Hier ist meine Protokollierungsklasse basierend auf der akzeptierten Antwort :
quelle
Hier ist ein Beispiel zum Überschreiben der Logger-Konfiguration aus dem Code. Benötigt keine externe Konfigurationsdatei.
FileLoggerTest.java:
MyLogHandler.java
quelle