Mam sytuację, w której chcę zapisywać wszystkie utworzone przeze mnie logi do pliku tekstowego.
Używamy interfejsu API java.util.logging.Logger do generowania dzienników.
Próbowałem:
private static Logger logger = Logger.getLogger(className.class.getName());
FileHandler fh;
fh = new FileHandler("C:/className.log");
logger.addHandler(fh);
Ale nadal otrzymuję moje dzienniki tylko na konsoli ...
Odpowiedzi:
Wypróbuj tę próbkę. Mi to pasuje.
Tworzy dane wyjściowe w MyLogFile.log
Edytować:
Aby usunąć program obsługi konsoli, użyj
ponieważ ConsoleHandler jest zarejestrowany w nadrzędnym programie rejestrującym, z którego pochodzą wszystkie programy rejestrujące.
źródło
FileHandler(path, true)
aby dodać dziennik do istniejącego pliku dziennika.Po pierwsze, gdzie zdefiniowałeś swój rejestrator i z jakiej klasy \ metody próbujesz go wywołać? Oto działający przykład, świeżo upieczony:
W swoim kodzie zapomniałeś zdefiniować formatera, jeśli potrzebujesz prostego możesz to zrobić tak jak wspomniałem powyżej, ale jest inna opcja, możesz to samodzielnie sformatować, jest przykład (po prostu wstaw go zamiast tej linii fh .setFormatter (nowy kod SimpleFormatter ())):
Lub jakakolwiek inna modyfikacja, jak chcesz. Mam nadzieję, że to pomoże.
źródło
Lokalizacją pliku dziennika można sterować za pomocą pliku logging.properties. I można to przekazać jako parametr JVM, np .:
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Szczegóły: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm
Konfigurowanie obsługi plików
Aby wysłać dzienniki do pliku, dodaj FileHandler do właściwości handlers w pliku logging.properties. Umożliwi to globalne rejestrowanie plików.
handlers= java.util.logging.FileHandler
Skonfiguruj procedurę obsługi, ustawiając następujące właściwości:java.util.logging.FileHandler.pattern określa położenie i wzorzec pliku wyjściowego. Domyślnym ustawieniem jest Twój katalog domowy.
java.util.logging.FileHandler.limit określa w bajtach maksymalną ilość zapisywaną przez program rejestrujący w dowolnym pliku.
java.util.logging.FileHandler.count określa liczbę plików wyjściowych, które mają być przełączane.
java.util.logging.FileHandler.formatter określa klasę programu formatującego java.util.logging, której klasa obsługi plików używa do formatowania komunikatów dziennika. SimpleFormatter tworzy krótkie, czytelne dla człowieka, podsumowania zapisów dziennika.
Aby poinstruować Javę, aby używała tego pliku konfiguracyjnego zamiast $ JDK_HOME / jre / lib / logging.properties:
źródło
Dostępna dobra biblioteka o nazwie log4j dla Javy .
Zapewni to wiele funkcji. Przejdź przez link, a znajdziesz swoje rozwiązanie.
źródło
Może tego potrzebujesz ...
źródło
źródło
źródło
Mam nadzieję, że ludzie uznają to za pomocne
źródło
Oto moja klasa logowania oparta na zaakceptowanej odpowiedzi :
źródło
Oto przykład, jak nadpisać konfigurację Loggera z kodu. Nie wymaga zewnętrznego pliku konfiguracyjnego.
FileLoggerTest.java:
MyLogHandler.java
źródło