Nie można znaleźć programów dołączających do programu rejestrującego (log4j)?

368

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?

maximus
źródło
5
To wydaje się być ostrzeżeniem w czasie wykonywania. Czy na pewno to widzisz podczas kompilacji?
maba
5
Czy próbowałeś odwiedzić adres URL w ostatnim wierszu ostrzeżeń?
Jesper,
4
tak!!! ale to niewiele mówi ... Dowiedziałem się, że potrzebuję pliku właściwości, aby skonfigurować mój program dołączający!
maximus
Ręcznie edytuj pliki konfiguracyjne, aby dodać program dołączający. Upewnij się, że masz prawidłowy i prawidłowy dokument konfiguracji.
Rzym. C
Zobacz także pytanie log4j: OSTRZEŻENIE Nie można znaleźć
dodatków

Odpowiedzi:

464

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:

BasicConfigurator.configure();

Drugim podejściem jest dodanie tego standardowego log4j.propertiespliku (wziętego z wyżej wspomnianego przewodnika) do ścieżki klasy:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Maba
źródło
3
Pierwszy krok jest w porządku. Cytat z krótkiego wprowadzenia do przewodnika log4j
ray6080
65
Dla nowych potknięć ... dodaj plik log4j.properties do src / main / resources i zakładając, że masz projekt maven. Rzeczy w src / main / resources znajdują się na ścieżce klasy.
keni
3
W pomysle IntelliJ otwórz ustawienia modułu i wybierz folder zasobów i kliknij zasoby, automatycznie doda każdy zasób do ścieżki klasy.
Waqas,
1
Nie pomogło Używam Eclipse Neon dla C ++ i umieściłem log4j.properties obok pliku wykonywalnego Eclipse i nie
pomogłem
log4j.rootLogger=DEBUG, A1to linia, za którą cały czas mi brakowało.
Mohammad Faisal
74

Wygląda na to, że musisz dodać lokalizację swojego log4j.propertiespliku 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:

  1. Biegać
  2. Uruchom konfiguracje
  3. Ścieżka klasy (karta)
  4. Wpisy użytkownika
  5. Zaawansowane (przycisk po prawej)
  6. Dodaj foldery
  7. następnie przejdź do folderu zawierającego plik log4j.properties
  8. Zastosować
  9. Biegać

Komunikat o błędzie nie powinien już być wyświetlany.

JDJ
źródło
Komunikaty ostrzegawcze nie pojawiają się teraz, ale dzienniki nie są zapisywane w żądanej lokalizacji
Arpan Saini
48

Szybkie rozwiązanie:

  1. dodaj kod do głównej funkcji :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. utwórz plik o nazwie log4j.properties w / path / to

    log4j.rootLogger=INFO, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
lancereks
źródło
Umieść plik log4j.properties w katalogu zasobów, takim jak src / test / resource
Alok
Aby uniknąć jawnej deklaracji ścieżki log4j.properties; umieść go w folderze projektu i uzyskaj do niego dostęp jak String log4jConfPath = System.getProperty („user.dir”) + File.separator + „log4j.properties”;
Amimo Benja,
36

To tylko ostrzeżenie.

Ustalenie

Dzieje się tak, gdy nie można znaleźć domyślnych plików konfiguracyjnych, log4j.propertiesa log4j.xmlaplikacja nie wykonuje jawnej konfiguracji.

Aby to naprawić, po prostu utwórz / skopiuj log4j.propertieslub log4j.xmldo 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.

log4j wykorzystuje Thread.getContextClassLoader().getResource() do lokalizowania domyślnych plików konfiguracyjnych i nie sprawdza bezpośrednio systemu plików. Znanie odpowiedniej lokalizacji do umieszczenia log4j.propertieslub log4j.xmlwymaga zrozumienia strategii wyszukiwania używanego modułu ładującego klasy. log4jnie zapewnia domyślnej konfiguracji, ponieważ dane wyjściowe do konsoli lub systemu plików mogą być zabronione w niektórych środowiskach.

Debugowanie

Do debugowania możesz spróbować użyć -Dlog4j.debug=trueparametru.

Konfiguracja log4j.properties

Przykładowa konfiguracja log4j.properties:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

Oto inny plik konfiguracyjny, który korzysta z wielu programów dołączających:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Apache Solr

Jeśli używasz Solr , skopiuj <solr>/example/resources/log4j.propertiesdo lokalizacji na ścieżce klasy .

Przykładowa konfiguracja log4j.propertiesz Solr wygląda następująco:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

Zobacz też:

kenorb
źródło
13

Większość odpowiedzi tutaj sugeruje, że log4j.propertiesplik 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.propertiesnie jest poprawnie skonfigurowany. Oto próbka, która działa dla mnie, możesz ją najpierw wypróbować.

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Searene
źródło
1
Fakt, że log4j uważa, że ​​„nie można znaleźć pliku” i „niepełna specyfikacja w pliku” to ten sam błąd, jest marnowaniem czasu.
Ed Norris
1
Dla mnie to najlepsza odpowiedź. Głosuję za tobą i dodałem kilka wyjaśnień w twojej odpowiedzi.
schlebe,
Najlepsza odpowiedź dla mnie !!!
nosiciel broni
8

Jak wyjaśniono wcześniej, istnieją 2 podejścia

Pierwszym jest dodanie tej linii do głównej metody:

BasicConfigurator.configure();

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.

Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

Upewnij się, że utworzyłeś wymagany folder do przechowywania plików dziennika.

AkashK
źródło
Miałem ten sam problem i użyłem BasicConfigurator.configure (); w metodzie głównej, a teraz kod działa poprawnie.
Surabhi Pandey,
7

Używasz Loggerw swoim kodzie do zarejestrowania wiadomości. AppenderJest obiektem dołączoną do Loggerpisania wiadomości do konkretnego celu. Można FileAppenderpisać w plikach tekstowych lub ConsoleAppenderpisać 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.

Płyn symulujący
źródło
6

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).

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >
Belvey
źródło
To! Spędziłem godziny, aby znaleźć odpowiedź. Mój kod sprawy działa dobrze w systemie Linux, ale ten błąd występuje w systemie Windows (to samo NB IDE) i wszystkie powyższe rozwiązania nie działają!
Tiana987642,
5

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:

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

Rozwiązanie: Skonfiguruj log4j na początku w głównej metodzie:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file
a3po2.0
źródło
Dziękuję bardzo!!! Wszyscy zakładają, że Spring lub Tomcat, lub coś innego, aby zainicjować konfigurację.
Windgazer
3

Myślę, że powinieneś zrozumieć, gdzie plik jar log4j lub kod Java szuka plików konfiguracyjnych log4j.

src/main/resources/log4j.propertiesjest ś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/

Jin Thakur
źródło
3

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.

ekjcfn3902039
źródło
3

Dodaj następujący kod jako pierwszy kod:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);
fty4
źródło
2

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 .

Antonio Martin
źródło
2

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:

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Yamuna Erraguntla
źródło
1

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:

Logger log = LogManager.getLogger(MyClassIWantedToLogFrom.class);

I udało mi się go uruchomić z plikiem pom, który zawierał to:

         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath> 
                        <mainClass>com.mycompany.mainPackage.mainClass</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path> <!-- need to add current directory to classpath properties files can be found -->
                    </manifestEntries>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
Jmort
źródło
1

Upewnij się, że Twój projekt jest otwarty w Eclipse, a następnie kliknij menu „Uruchom” u góry Eclipse i kliknij:

  1. Biegać

  2. Uruchom konfiguracje

  3. Ścieżka klasy (karta)

  4. Wpisy użytkownika

  5. dodaj słoik po prawej stronie

  6. dodaj plik jar log4j

  7. Zastosować

  8. Biegać

Komunikat o błędzie nie powinien już być wyświetlany.

Varaj Vignesh
źródło
1

Przyczyną może być brak słowa staticw niektórych:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

Jeśli ustawię rejestrator jako pole instancji, otrzymuję dokładnie to ostrzeżenie:

No appenders could be found for logger (org.apache.kafka.producer.Sender)

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!

Gangnus
źródło
1

Ten sam problem napotkałem, gdy korzystam z log4j2. Mój problem jest spowodowany przez użycie niewłaściwie zależnej biblioteki:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>runtime</scope>
    </dependency>

Zamiast tego powinienem użyć:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

W moim przypadku mam plik log4j2.xml zdefiniowany w moim katalogu „resources” i określony do użycia przez:

System.setProperty("log4j.configurationFile", "log4j2.xml");
John Zhang
źródło
1

Log4J wyświetla ten komunikat ostrzegawczy, gdy kod Java Log4j szuka pierwszej linii dziennika w twoim programie.

W tej chwili Log4j tworzy 2 rzeczy

  1. szuka, aby znaleźć log4j.propertiesplik
  2. wyszukuje, aby utworzyć instancję modułu dołączającego w log4j.properties

Jeśli log4Jnie można znaleźć log4j.propertiespliku lub jeśli program dołączający zadeklarowany w log4j.rootloggernie jest zdefiniowany w innym miejscu log4j.propertiespliku, wyświetlony zostanie komunikat ostrzegawczy.

UWAGA: zawartość pliku właściwości musi być poprawna.

Następująca treść NIE jest poprawna

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

ponieważ program filedołączający jest zadeklarowany w log4j.rootloggerinstrukcji LOWER-CASE w instrukcji i zdefiniowany w instrukcji log4j.appender za pomocą UPPER-CASE!

Prawidłowy plik to

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

Jeśli używany jest MAVEN, należy umieścić pliki log4j.properties src/main/resourcesORAZ uruchomić kompilację MAVEN.

Plik Log4j.properties jest następnie kopiowany do target/classesfolderu.

Log4J używa log4j.propertiespliku, w którym się znalazł target/classes!

schlebe
źródło
1

Też miałem ten problem. Właśnie zapomniałem zaznaczyć katalog zasobów w IntelliJ IDEA

  1. Kliknij katalog prawym przyciskiem myszy
  2. Oznacz katalog jako
  3. Korzeń zasobów
Sadap
źródło
1

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.

stijena
źródło
0

Moja instalacja Eclipse nie mogła znaleźć log4j.propertiespodczas uruchamiania testów JUnit z Eclipse, mimo że plik był zlokalizowany src/test/resources.

Powodem było to, że Eclipse (lub łącznik m2e ) nie kopiował zawartości src/test/resourcesdo oczekiwanego folderu wyjściowego target/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.propertiesdo target/test-classes/log4j.properties.

Abdull
źródło
0

Jeśli log4j.propertiesrzeczywiście znajduje się w ścieżce klas, używasz Spring Boot do utworzenia pliku WAR do wdrożenia na serwerze aplikacji, pomijasz web.xmlplik 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:

public class AppConfig extends SpringBootServletInitializer {

    public static void main( String[] args ) {
        // Launch the application
        ConfigurableApplicationContext context = SpringApplication.run( AppConfig.class, args );
    }

    @Override
    protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
        InputStream log4j = this.getClass().getClassLoader().getResourceAsStream("log4j.properties");
        PropertyConfigurator.configure(log4j);
        return application;
    }

// Other beans as required...
}
Brian Schalme
źródło
0

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!

Nocny wiatr
źródło
0

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.

yasin
źródło
0

Pierwszy import:

 import org.apache.log4j.PropertyConfigurator;

Następnie dodaj poniższy kod do głównej metody:

String log4jConfPath ="path to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

Utwórz plik pod ścieżką i dodaj poniższy kod do tego pliku.

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
himansug
źródło
0

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

# This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender

# settings for the console appender
log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
ihossain
źródło
0

Po pierwsze: utwórz plik log4j.properties

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Umieść go w src / main / resources /

Następnie skorzystaj z 2 zależności:

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

Konieczne jest dodanie tej końcowej zależności do pliku POM:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>
nosorożec
źródło
0

Rozważ argument log4j JVM Dlog4j.configuration

Ogólnie:

Dodaj argument JVM wskazujący plik konfiguracyjny log4j. Składnia jest następująca:

java [ options ] -jar file.jar [ arguments ]

Przykład prawdziwego wiersza polecenia wygląda następująco:

java -Dlog4j.configuration=conf/log4j.xml -jar myJarFile.jar myArg1 myArg2

Dla użytkowników IntelliJ IDE:

1.Run/Debug Configurations
2.Edit configurations...
3.VM options
4.Enter the same value also starting with "-D"

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.

Farlon Souto
źródło
-4

W środowisku Java Eclipse skopiuj plik conf_ref do folderu conf.

Anuj Pandey
źródło