Po dodaniu log4j do mojej aplikacji za każdym razem, gdy uruchamiam aplikację, otrzymuję następujące dane wyjściowe:
log4j: WARN Nie można znaleźć dodatków dla programu rejestrującego (slideselector.facedata.FaceDataParser). log4j: OSTRZEŻENIE Proszę poprawnie zainicjować system log4j.
Wygląda na to, że oznacza to brak pliku konfiguracyjnego. Gdzie powinien znajdować się ten plik konfiguracyjny i jaka jest dobra zawartość początkowa?
Używam zwykłego języka Java do tworzenia aplikacji komputerowych. Więc nie ma serwera itp.
configuration
log4j
Janusz
źródło
źródło
Odpowiedzi:
Log4j
domyślnie szuka pliku o nazwielog4j.properties
lublog4j.xml
w ścieżce klasy.Możesz kontrolować, który plik używa do inicjowania się, ustawiając właściwości systemowe zgodnie z opisem tutaj (poszukaj sekcji „Domyślna procedura inicjalizacji”).
Na przykład:
Powoduje
log4j
poszukiwanie pliku o nazwie customName na ścieżce klasy.W przypadku problemów uważam, że pomocne jest włączenie log4j.debug:
Wydrukuje do System.out wiele przydatnych informacji o tym, którego pliku użył do zainicjowania się, które loggery / moduły dodające zostały skonfigurowane i jak itp
Plik konfiguracyjny może być plikiem właściwości Java lub plikiem XML. Oto przykład formatu pliku właściwości pobranego ze strony dokumentacji wprowadzenia do log4j :
źródło
java -Dlog4j.configuration=customName
? Próbowałem Project / Preferences / Run / Debug Settings, wybrałem kilka konfiguracji, kliknąłem Edycja, zakładkę Argumenty, argumenty VM. Czy nazwa niestandardowa zawiera rozszerzenie .xml?-Dlog4j.debug
mogą pomóc w debugowaniu konfiguracji.Prawidłowe skonfigurowanie log4j jest idealne dla „prawdziwych” projektów, możesz chcieć szybkiego i brudnego rozwiązania, np. Jeśli tylko testujesz nową bibliotekę.
Jeśli tak, wywołanie metody statycznej
skonfiguruje podstawowe logowanie do konsoli, a komunikaty o błędach znikną.
źródło
Logger.getRootLogger().setLevel(Level.INFO);
Jeśli po prostu pozbędziesz się wszystkiego (np. Jeśli jesteś w trakcie testów)
źródło
Zgodnie ze stroną FAQ Apache Log4j :
Zasadniczo ostrzeżenie Nie można znaleźć dodatków do programu rejestrującego, co oznacza, że używasz
log4j
programów dołączających systemu rejestrującego, ale nie dodałeś żadnych programów dołączających (takich jak FileAppender, ConsoleAppender, SocketAppender, SyslogAppender itp.) Do pliku konfiguracyjnego lub plik konfiguracyjny to brakujący.Istnieją trzy sposoby konfiguracji log4j: za pomocą pliku właściwości (
log4j.properties
), pliku XML i za pomocą kodu Java (rootLogger.addAppender(new NullAppender());
).log4j.properties
Jeśli masz plik właściwości (np. Podczas instalacji Solr), musisz umieścić ten plik w ścieżce klasy katalogu .
ścieżka klasy
Oto kilka sugestii poleceń w systemie Linux, jak określić wartość ścieżki klasy:
lub z Java:
System.getProperty("java.class.path")
.Log4j XML
Poniżej znajduje się podstawowy plik konfiguracyjny XML dla log4j w formacie XML:
Kocur
Jeśli używasz Tomcat, możesz umieścić go
log4j.properties
w:/usr/share/tomcat?/lib/
lub/var/lib/tomcat?/webapps/*/WEB-INF/lib/
folderze.Solr
Dla odniesienia domyślny
log4j.properties
plik Solr wygląda następująco:Dlaczego log4j nie może znaleźć mojego pliku właściwości w aplikacji J2EE lub WAR?
Zobacz też:
źródło
Możesz ustawić lokalizację pliku log4j.properties z poziomu aplikacji Java, używając:
Więcej informacji jest dostępnych tutaj: https://logging.apache.org/log4j/1.2/manual.html
źródło
import
Stwierdzenie jest zawsze pomocny jako kod zakończenia nie jest wcale tak niezawodne.Znajdź plik log4j.properties lub log4j.xml online z aplikacją root i umieść go na ścieżce klasy.
zaloguje się do konsoli. Wolę zalogować się do pliku, abyś mógł później to sprawdzić.
chociaż w przypadku pełnych aplikacji do rejestrowania 100 KB zwykle należy zwiększyć do 1 MB lub 10 MB, szczególnie w przypadku debugowania.
Osobiście skonfigurowałem wiele programów rejestrujących i ustawiłem program rejestrujący root na ostrzeganie lub poziom błędu zamiast debugowania.
źródło
Innym sposobem na zrobienie tego bez umieszczania pliku właściwości na ścieżce klasy jest bezpośrednie ustawienie właściwości z kodu Java. Oto przykładowy kod.
}
źródło
Możesz skonfigurować poziom dziennika za pomocą setLevel () .
Poziomy są przydatne do łatwego ustawienia rodzaju informacji, które program ma wyświetlać.
Na przykład:
Zestaw możliwych poziomów to:
Zgodnie z instrukcją Logging Services
źródło
źródło
System.out
. Jawadoc dla metody no-args config mówi:Add a ConsoleAppender that uses PatternLayout using the PatternLayout#TTCC_CONVERSION_PATTERN and prints to System.out to the root category.
Aby włączyć
-Dlog4j.debug
, przejdź do System, Zaawansowane ustawienia systemu, Zmienne środowiskowe i ustaw zmienną systemową_JAVA_OPTIONS
na-Dlog4j.debug
.źródło
W czym się rozwijasz? Czy używasz Apache Tomcat?
Mam takie właściwości w mojej aplikacji Java.
źródło
Mój log4j został naprawiony przez poniższy plik właściwości:
źródło
Utworzyłem plik log4j.properties w folderze zasobów obok pliku hibernacji.cfg.xml i wypełniłem go tekstem poniżej:
teraz pozbyłem się ostrzeżeń i błędów
źródło
Po prostu utwórz plik log4j.properties w folderze src / main / assembly. W zależności od tego, czy chcesz wyświetlać komunikaty dziennika w konsoli, czy w pliku, który modyfikujesz. Poniżej zostaną wyświetlone wiadomości w konsoli.
źródło
Jak wyjaśniono wcześniej, istnieją 2 podejścia
Pierwszym jest dodanie tej linii do głównej metody:
Drugim podejściem jest dodanie tego standardowego pliku log4j.properties do ścieżki klasy:
Podczas drugiego podejścia musisz upewnić się, że plik został poprawnie zainicjowany.
Na przykład.
Upewnij się, że utworzyłeś wymagany folder do przechowywania plików dziennika.
źródło
Spróbuj ustawić atrybut debugowania w węźle log4j: config na true.
Drukuje informacje podczas odczytywania pliku konfiguracyjnego i wykorzystywania go do konfiguracji środowiska log4j. Możesz uzyskać więcej informacji, aby rozwiązać problem.
źródło
Logging API - Java Logging API ułatwia serwisowanie i konserwację oprogramowania u klientów poprzez tworzenie raportów dziennika odpowiednich do analizy przez użytkowników końcowych, administratorów systemu, inżynierów serwisowych i zespoły programistów. Interfejsy API rejestrowania przechwytują informacje, takie jak awarie bezpieczeństwa, błędy konfiguracji, wąskie gardła wydajności i / lub błędy w aplikacji lub platformie. Pakiet podstawowy obejmuje obsługę dostarczania do pamięci rekordów dziennika w formacie zwykłego tekstu lub XML, strumieni wyjściowych, konsol, plików i gniazd. Ponadto interfejsy API rejestrowania mogą wchodzić w interakcje z usługami rejestrowania, które już istnieją w systemie operacyjnym hosta.
Pakiet java.util.logging «Zapewnia klasy i interfejsy podstawowych funkcji rejestrowania platformy Java.
Log4j 1.x «log4j to popularne narzędzie do logowania oparte na Javie. Log4j to projekt typu open source oparty na pracy wielu autorów. Pozwala deweloperowi kontrolować, które wyciągi dziennika są wyprowadzane do różnych lokalizacji za pomocą programów dołączających [konsola, pliki, baza danych i poczta e-mail]. Jest w pełni konfigurowalny w czasie wykonywania przy użyciu zewnętrznych plików konfiguracyjnych.
Pliki konfiguracyjne można zapisać w formacie XML lub we właściwościach Java (klucz = wartość).
Struktura tabeli MySQL dla tabeli
logdata
źródło
Dla mnie rozwiązaniem było umieszczenie pliku „log4j.properties” w folderze „src”.
źródło
Jeśli korzystamy z apache commons loging wrapper na log4j, to musimy mieć oba słoiki dostępne w ścieżce klasy. Również
commons-logging.properties
ilog4j.properties/xml
powinien być dostępny w ścieżce klasy.Możemy również przekazać klasę implementacji i
log4j.properties
nazwę jakoJAVA_OPTS
za pomocą-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
. To samo można zrobić poprzez ustawienieJAVA_OPTS
w przypadku aplikacji / serwera WWW.Pomoże to w uzewnętrznieniu właściwości, które można zmienić podczas wdrażania.
źródło
Jest to alternatywny sposób korzystania z .yaml
Struktura logiczna:
Próba:
Patrz: LOG4J 2 KONFIGURACJA: ZA POMOCĄ YAML
źródło
Do testowania szybki i brudny sposób, w tym ustawienie poziomu dziennika:
źródło
Rozwiązanie Maven:
Natknąłem się na wszystkie te same problemy, co powyżej, i dla rozwiązania maven użyłem 2 zależności. Ta konfiguracja jest przeznaczona tylko do szybkiego testowania, jeśli chcesz, aby prosty projekt korzystał z rejestratora ze standardową konfiguracją. Mogę sobie wyobrazić, że chcesz później utworzyć plik konfiguracyjny, jeśli potrzebujesz więcej informacji i / lub ukończyć własne poziomy rejestrowania.
źródło
Właśnie to zrobiłem i problem został rozwiązany.
Śledziłem poniższy blog
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206875685-How-to-fix-log4j-WARN-console-messages-when-running-an-Application-inside-IntelliJ- Pomysł
Ale tutaj mówi jak poniżej
Aby to naprawić, wystarczy wprowadzić następujący plik log4j.resources do folderu main / resources projektu
zamiast tworzyć log4j.resources, utwórz log4j.properties. Kliknij prawym przyciskiem myszy Zasób w IntelliJ -> Nowy -> Pakiet zasobów - Po prostu nazwij go log4j
źródło
Jeśli masz ten błąd w Intellij IDEA, nawet po dodaniu pliku
log4j.properties
lub dolog4j.xml
folderu testowego zasobów, być może Intellij IDEA nie wie jeszcze o istnieniu pliku.Po dodaniu pliku kliknij go prawym przyciskiem myszy i wybierz polecenie Rekompiluj plik log4j.xml .
źródło