Umieściłem log4j w ścieżce kompilacji, ale po uruchomieniu aplikacji pojawia się następujący komunikat:
log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Co oznaczają te ostrzeżenia? Co tu jest aplikant?
Odpowiedzi:
To krótkie wprowadzenie do przewodnika log4j jest trochę stare, ale wciąż aktualne.
Ten przewodnik zawiera informacje na temat korzystania z rejestratorów i programów dołączających.
Aby rozpocząć, masz dwa proste podejścia, które możesz zastosować.
Pierwszym jest dodanie tej linii do głównej metody:
Drugim podejściem jest dodanie tego standardowego
log4j.properties
pliku (wziętego z wyżej wspomnianego przewodnika) do ścieżki klasy:źródło
log4j.rootLogger=DEBUG, A1
to linia, za którą cały czas mi brakowało.Wygląda na to, że musisz dodać lokalizację swojego
log4j.properties
pliku do Ścieżki klas w Eclipse.Upewnij się, że Twój projekt jest otwarty w Eclipse, a następnie kliknij menu „Uruchom” u góry Eclipse i kliknij:
Komunikat o błędzie nie powinien już być wyświetlany.
źródło
Szybkie rozwiązanie:
dodaj kod do głównej funkcji :
utwórz plik o nazwie log4j.properties w / path / to
źródło
To tylko ostrzeżenie.
Ustalenie
Dzieje się tak, gdy nie można znaleźć domyślnych plików konfiguracyjnych,
log4j.properties
alog4j.xml
aplikacja nie wykonuje jawnej konfiguracji.Aby to naprawić, po prostu utwórz / skopiuj
log4j.properties
lublog4j.xml
do swojej lokalizacji na ścieżce klasy (zwykle takiej samej jak pliki jar).Opcjonalnie można ustawić opcję Java:
-Dlog4j.configuration=file:///path/to/log4j.properties
.Debugowanie
Do debugowania możesz spróbować użyć
-Dlog4j.debug=true
parametru.Konfiguracja
log4j.properties
Przykładowa konfiguracja
log4j.properties
:Oto inny plik konfiguracyjny, który korzysta z wielu programów dołączających:
Apache Solr
Jeśli używasz Solr , skopiuj
<solr>/example/resources/log4j.properties
do lokalizacji na ścieżce klasy .Przykładowa konfiguracja
log4j.properties
z Solr wygląda następująco:Zobacz też:
źródło
Większość odpowiedzi tutaj sugeruje, że
log4j.properties
plik powinien być umieszczony we właściwej lokalizacji (w przypadku projektu maven powinien on znajdować się wsrc/main/resources
)Ale dla mnie problemem jest to, że mój
log4j.properties
nie jest poprawnie skonfigurowany. Oto próbka, która działa dla mnie, możesz ją najpierw wypróbować.ź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 poprawnie zainicjowałeś plik, np.
Upewnij się, że utworzyłeś wymagany folder do przechowywania plików dziennika.
źródło
Używasz
Logger
w swoim kodzie do zarejestrowania wiadomości.Appender
Jest obiektem dołączoną doLogger
pisania wiadomości do konkretnego celu. MożnaFileAppender
pisać w plikach tekstowych lubConsoleAppender
pisać w konsoli. Aby uzyskać pomoc, musisz pokazać kod konfiguracji rejestratora i programu dołączającego.proszę przeczytać samouczek, aby lepiej zrozumieć interakcję Loggera i Appendera.
źródło
Upewnij się, że plik właściwości został poprawnie ustawiony. I znowu wygląda na to, że kompilator nie może znaleźć pliku właściwości, możesz ustawić jako pom na pom (tylko wtedy, gdy używasz projektu maven).
źródło
Otrzymuję ten sam błąd. Tutaj problem, który prowadzi do tego komunikatu o błędzie:
Tworzę obiekty, które używają Loggera przed skonfigurowaniem log4j:
Rozwiązanie: Skonfiguruj log4j na początku w głównej metodzie:
źródło
Myślę, że powinieneś zrozumieć, gdzie plik jar log4j lub kod Java szuka plików konfiguracyjnych log4j.
src/main/resources/log4j.properties
jest ścieżką Eclipse. Umieść je w odpowiednim miejscu, aby nie musieć kodować bezwzględnej ścieżki w kodzie.Przeczytaj mój artykuł i przykładowe rozwiązanie dla tego http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/
źródło
Innym powodem, dla którego może się to zdarzyć (w RCP4) jest to, że używasz wielu struktur rejestrowania w pliku docelowym. Na przykład tak się stanie, jeśli użyjesz kombinacji slf4j, log4j i ch.qos.logback.slf4j na karcie zawartości plików docelowych.
źródło
Dodaj następujący kod jako pierwszy kod:
źródło
W moim przypadku błędem była flaga „ addytywność ”. Jeśli jest to „fałsz” dla twojego pakietu projektu root, wówczas pakiety potomne nie będą miały programu dołączającego i zobaczysz błąd „ nie znaleziono programu dołączającego .
źródło
Ten sam problem napotkałem, gdy próbowałem uruchomić klasę testową JUnit.
Problem został rozwiązany po ręcznym dodaniu pliku log4j.properties do folderu src / test / resources.
Dodanie poniższego kodu do pliku log4j.properties rozwiązało problem:
źródło
Zetknąłem się z tym problemem, próbując zbudować plik wykonywalny z maven w programie Intellij 12. Okazało się, że ponieważ plik manifestu java nie zawiera ścieżki klasy, nie można znaleźć pliku właściwości log4j na poziomie głównym (gdzie plik jar został wykonany z.)
Do Twojej wiadomości dostałem rejestrator w następujący sposób:
I udało mi się go uruchomić z plikiem pom, który zawierał to:
źródło
Upewnij się, że Twój projekt jest otwarty w Eclipse, a następnie kliknij menu „Uruchom” u góry Eclipse i kliknij:
Biegać
Uruchom konfiguracje
Ścieżka klasy (karta)
Wpisy użytkownika
dodaj słoik po prawej stronie
dodaj plik jar log4j
Zastosować
Biegać
Komunikat o błędzie nie powinien już być wyświetlany.
źródło
Przyczyną może być brak słowa
static
w niektórych:Jeśli ustawię rejestrator jako pole instancji, otrzymuję dokładnie to ostrzeżenie:
Co gorsza, ostrzeżenie wskazuje nie na to
ProcessorTest
, gdzie mieszka błąd, ale na zupełnie inną klasę (Nadawcę) jako źródło problemów. Ta klasa ma poprawnie ustawiony rejestrator i nie wymaga żadnych zmian! Możemy szukać problemu od wieków!źródło
Ten sam problem napotkałem, gdy korzystam z log4j2. Mój problem jest spowodowany przez użycie niewłaściwie zależnej biblioteki:
Zamiast tego powinienem użyć:
W moim przypadku mam plik log4j2.xml zdefiniowany w moim katalogu „resources” i określony do użycia przez:
źródło
Log4J wyświetla ten komunikat ostrzegawczy, gdy kod Java Log4j szuka pierwszej linii dziennika w twoim programie.
W tej chwili Log4j tworzy 2 rzeczy
log4j.properties
pliklog4j.properties
Jeśli
log4J
nie można znaleźćlog4j.properties
pliku lub jeśli program dołączający zadeklarowany wlog4j.rootlogger
nie jest zdefiniowany w innym miejsculog4j.properties
pliku, wyświetlony zostanie komunikat ostrzegawczy.UWAGA: zawartość pliku właściwości musi być poprawna.
Następująca treść NIE jest poprawna
ponieważ program
file
dołączający jest zadeklarowany wlog4j.rootlogger
instrukcji LOWER-CASE w instrukcji i zdefiniowany w instrukcji log4j.appender za pomocą UPPER-CASE!Prawidłowy plik to
Jeśli używany jest MAVEN, należy umieścić pliki log4j.properties
src/main/resources
ORAZ uruchomić kompilację MAVEN.Plik Log4j.properties jest następnie kopiowany do
target/classes
folderu.Log4J używa
log4j.properties
pliku, w którym się znalazłtarget/classes
!źródło
Też miałem ten problem. Właśnie zapomniałem zaznaczyć katalog zasobów w IntelliJ IDEA
źródło
Jeśli używasz Eclipse i ten problem pojawił się znikąd po tym, jak wszystko działało wcześniej, spróbuj to zrobić
Project - Clean - Clean
.źródło
Moja instalacja Eclipse nie mogła znaleźć
log4j.properties
podczas uruchamiania testów JUnit z Eclipse, mimo że plik był zlokalizowanysrc/test/resources
.Powodem było to, że Eclipse (lub łącznik m2e ) nie kopiował zawartości
src/test/resources
do oczekiwanego folderu wyjściowegotarget/test-classes
- główną przyczyną było to, że we właściwościach projektu w obszarze Ścieżka kompilacji Java -> karta Źródło -> Foldery źródłowe na ścieżce kompilacji -> src / test / zasoby , jakoś tam byłExcluded: **
wpis. Usunąłem wykluczony wpis.Ewentualnie mógłbym ręcznie kopiowane
src/test/resources/log4j.properties
dotarget/test-classes/log4j.properties
.źródło
Jeśli
log4j.properties
rzeczywiście znajduje się w ścieżce klas, używasz Spring Boot do utworzenia pliku WAR do wdrożenia na serwerze aplikacji, pomijaszweb.xml
plik na korzyść automatycznej konfiguracji Spring Boot i nie otrzymujesz żadnych komunikatów dziennika, musisz jawnie skonfiguruj Log4j. Zakładając, że używasz Log4j 1.2.x:źródło
Może dodaję właściwy projekt zawiera log4j na ścieżce kompilacji Java, dodam do niego mahout_h2o, gdy napotkałem ten problem w projekcie mahout przy użyciu Eclipse, działa!
źródło
jeśli współpracujesz z wieloma projektami, możesz napotkać problem ze stylem.
* musisz mieć jeden plik lof4j.properties, który zawiera właściwości dziennika innego projektu.
* Poza tym możesz spróbować umieścić pliki właściwości log4j na ścieżce src podczas pracy nad systemem Linux, lib innych projektów i pliki log4.properties mogą znajdować się w jednym folderze w lokalizacji na ścieżce klas.
źródło
Pierwszy import:
Następnie dodaj poniższy kod do głównej metody:
Utwórz plik pod ścieżką i dodaj poniższy kod do tego pliku.
źródło
Rozwiązanie na tej stronie działało dla mnie https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Teraz nie widzę żadnych ostrzeżeń z log4j
Umieszczam to w pliku log4j.properties, który umieszczam w src / main / resources
źródło
Po pierwsze: utwórz plik log4j.properties
Umieść go w src / main / resources /
Następnie skorzystaj z 2 zależności:
Konieczne jest dodanie tej końcowej zależności do pliku POM:
źródło
Rozważ argument log4j JVM Dlog4j.configuration
Ogólnie:
Dodaj argument JVM wskazujący plik konfiguracyjny log4j. Składnia jest następująca:
Przykład prawdziwego wiersza polecenia wygląda następująco:
Dla użytkowników IntelliJ IDE:
Wskazówki:
1. Użytkownicy Elipsu IDE znajdą równoważne podejście
2. W przypadku edytora konfiguracji uruchamiania / debugowania bardzo prawdopodobne jest, że na początku nie ma tam określonego pliku wykonywalnego. W zależności od wielkości projektu, nad którym aktualnie pracujesz, nawigacja w katalogach, aby go znaleźć, może być nieprzyjemna. To mniej kłopotliwe, jeśli po prostu uruchomisz / wykonasz plik (kliknij play) raz przed przystąpieniem do uruchamiania / debugowania konfiguracji bez względu na wynik wykonania.
3. Zwróć uwagę na katalog roboczy, ścieżki względne i ścieżkę klasy.
źródło
W środowisku Java Eclipse skopiuj plik conf_ref do folderu conf.
źródło