Tidak ditemukan appenders untuk logger (log4j)?

369

Saya telah memasukkan log4j ke buildpath saya, tetapi saya mendapatkan pesan berikut ketika saya menjalankan aplikasi saya:

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.

Apa arti peringatan ini? Apa appender di sini?

maximus
sumber
5
Itu tampaknya menjadi peringatan runtime. Apakah Anda yakin melihat ini saat dikompilasi?
maba
5
Apakah Anda mencoba mengunjungi URL di baris terakhir peringatan?
Jesper
4
Iya!!! tetapi itu tidak mengatakan banyak ... Saya menemukan bahwa saya memerlukan file properti untuk mengkonfigurasi appender saya!
maximus
Edit file konfigurasi secara manual untuk menambahkan appender. Pastikan Anda memiliki dokumen konfigurasi yang benar & valid.
Roman C

Jawaban:

464

Ini pengenalan singkat ke log4j panduan sedikit tua tapi masih berlaku.

Panduan itu akan memberi Anda beberapa informasi tentang cara menggunakan penebang dan appender.


Hanya untuk membuat Anda pergi, Anda memiliki dua pendekatan sederhana yang dapat Anda ambil.

Yang pertama adalah menambahkan baris ini ke metode utama Anda:

BasicConfigurator.configure();

Pendekatan kedua adalah menambahkan log4j.propertiesfile standar ini (diambil dari panduan yang disebutkan di atas) ke classpath Anda:

# 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
sumber
3
Langkah pertama saja ok. Kutipan dari pengantar singkat untuk panduan log4j
ray6080
65
Untuk tersandung baru ... tambahkan file log4j.properties ke src / main / resources dan dengan asumsi Anda memiliki proyek pakar. Barang-barang di src / main / resource disertakan di classpath.
keni
3
Dalam pengaturan modul ide IntelliJ terbuka dan pilih folder sumber daya Anda dan klik sumber daya, itu secara otomatis akan menambahkan setiap sumber daya Anda ke classpath.
Waqas
1
Tidak membantu Saya menggunakan Eclipse Neon untuk C ++, dan saya telah meletakkan log4j.properties di samping gerhana yang dapat dieksekusi dan tidak membantu
Nadav B
log4j.rootLogger=DEBUG, A1adalah garis yang saya lewatkan sepanjang waktu.
Mohammad Faisal
74

Sepertinya Anda perlu menambahkan lokasi log4j.propertiesfile Anda ke Classpath di Eclipse.

Pastikan proyek Anda terbuka di Eclipse, lalu klik menu "Run" di bagian atas Eclipse dan klik yang berikut ini:

  1. Lari
  2. Jalankan Konfigurasi
  3. Classpath (tab)
  4. Entri Pengguna
  5. Lanjutan (tombol di sebelah kanan)
  6. Tambahkan Folder
  7. lalu arahkan ke folder yang berisi file log4j.properties Anda
  8. Menerapkan
  9. Lari

Pesan kesalahan seharusnya tidak lagi muncul.

JDJ
sumber
Pesan peringatan tidak muncul sekarang tetapi log tetap tidak ditulis di lokasi yang diinginkan
Arpan Saini
48

Solusi cepat:

  1. tambahkan kode ke fungsi utama :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. buat file bernama log4j.properties di / 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
lancerex
sumber
Tempatkan file log4j.properties di dalam direktori resource seperti src / test / resource
Alok
Untuk menghindari deklarasi eksplisit jalur log4j.properties; letakkan di dalam folder proyek Anda dan akseslah seperti String log4jConfPath = System.getProperty ("user.dir") + File.separator + "log4j.properties";
Amimo Benja
36

Ini hanya peringatan.

Pemasangan

Ini terjadi ketika file konfigurasi default log4j.propertiesdan log4j.xmltidak dapat ditemukan dan aplikasi tidak melakukan konfigurasi eksplisit.

Untuk memperbaikinya, cukup buat / salin log4j.propertiesatau log4j.xmlke lokasi Anda di classpath (biasanya sama dengan file jar).

Opsional menetapkan pilihan java: -Dlog4j.configuration=file:///path/to/log4j.properties.

log4jdigunakan Thread.getContextClassLoader().getResource()untuk mencari file konfigurasi default dan tidak secara langsung memeriksa sistem file. Mengetahui lokasi yang tepat untuk ditempatkan log4j.propertiesatau log4j.xmlmembutuhkan pemahaman tentang strategi pencarian loader kelas yang digunakan. log4jtidak memberikan konfigurasi default karena output ke konsol atau ke sistem file mungkin dilarang di beberapa lingkungan.

Debugging

Untuk debugging, Anda dapat mencoba menggunakan -Dlog4j.debug=trueparameter.

Konfigurasi log4j.properties

Konfigurasi sampel dari 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

Berikut ini adalah file konfigurasi lain yang menggunakan beberapa appenders:

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

Jika menggunakan Solr , salin <solr>/example/resources/log4j.propertieske lokasi di classpath .

Konfigurasi sampel log4j.propertiesdari Solr seperti:

#  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

Lihat juga:

kenorb
sumber
13

Sebagian besar jawaban di sini menyarankan bahwa log4j.propertiesfile ditempatkan di lokasi yang tepat (untuk proyek pakar, itu harus berada di src/main/resources)

Tetapi bagi saya, masalahnya adalah bahwa saya log4j.propertiestidak dikonfigurasi dengan benar. Ini contoh yang cocok untuk saya, Anda bisa mencobanya dulu.

# 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
sumber
1
Fakta bahwa log4j menganggap "tidak dapat menemukan file" dan "spec tidak lengkap dalam file" sebagai kesalahan yang sama adalah pemborosan waktu.
Ed Norris
1
Bagi saya, ini adalah jawaban terbaik. Saya memilih dan saya telah menambahkan beberapa penjelasan dalam jawaban Anda.
schlebe
Jawaban terbaik untuk saya !!!
nosequeweaponer
8

Seperti yang dijelaskan sebelumnya ada 2 pendekatan

Yang pertama adalah menambahkan baris ini ke metode utama Anda:

BasicConfigurator.configure();

Pendekatan kedua adalah menambahkan file log4j.properties standar ini ke classpath Anda:

Saat mengambil pendekatan kedua Anda perlu memastikan Anda menginisialisasi file dengan benar, misalnya.

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");

Pastikan Anda membuat folder yang diperlukan untuk menyimpan file log.

AkashK
sumber
Saya mengalami masalah yang sama dan saya menggunakan BasicConfigurator.configure (); dalam metode utama dan sekarang kode dijalankan dengan benar.
Surabhi Pandey
7

Anda menggunakan Loggerdalam kode Anda untuk mencatat pesan. Ini Appenderadalah Obyek yang ditambahkan ke Loggeruntuk menulis pesan ke target tertentu. Ada FileAppenderuntuk menulis ke file teks atau ConsoleAppendermenulis ke Konsol. Anda perlu menunjukkan kode Anda tentang pengaturan Logger dan Appender untuk bantuan lebih lanjut.

silakan baca tutorial untuk pemahaman yang lebih baik tentang interaksi Logger dan Appender.

Tiruan
sumber
6

Pastikan file properti telah diatur dengan benar. Dan lagi, sepertinya kompiler tidak dapat menemukan file properti, Anda dapat mengaturnya sebagai berikut di pom (hanya ketika Anda menggunakan proyek pakar).

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >
Belvey
sumber
Ini! Saya menghabiskan waktu berjam-jam untuk menemukan jawaban. Kode kasus saya berfungsi dengan baik di Linux tetapi memiliki kesalahan ini di windows (IDE NB yang sama) dan semua solusi di atas tidak bekerja!
Tiana987642
5

Saya mendapatkan kesalahan yang sama. Di sini masalah yang mengarah ke pesan kesalahan ini:

Saya membuat beberapa objek yang menggunakan Logger sebelum saya mengkonfigurasi log4j:

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

Solusi: Konfigurasikan log4j di awal dalam metode utama:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file
a3po2.0
sumber
Terima kasih banyak!!! Semua orang hanya mengasumsikan Spring atau Tomcat, atau apa pun untuk menginisialisasi konfigurasi.
Windgazer
3

Saya pikir Anda harus memahami di mana file jar log4j atau kode Java mencari file konfigurasi log4j.

src/main/resources/log4j.propertiesadalah jalur Eclipse. Tempatkan mereka di lokasi yang tepat sehingga Anda tidak perlu membuat hard code jalur absolut dalam kode.

Baca artikel saya dan contoh solusi untuk itu http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/

Jin Thakur
sumber
3

Alasan lain ini mungkin terjadi (dalam RCP4) adalah bahwa Anda menggunakan beberapa kerangka kerja logging di file target Anda. Sebagai contoh, ini akan terjadi jika Anda menggunakan kombinasi slf4j, log4j dan ch.qos.logback.slf4j di tab konten file target Anda.

ekjcfn3902039
sumber
3

Tambahkan yang berikut ini sebagai kode pertama:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);
fty4
sumber
2

Dalam kasus saya, kesalahannya adalah bendera " aditivitas ". Jika "salah" untuk Anda me-root paket proyek, maka paket anak tidak akan memiliki append dan Anda akan melihat kesalahan " appender not found ".

Antonio Martin
sumber
2

Saya menghadapi masalah yang sama ketika saya mencoba menjalankan kelas tes JUnit.

Masalah ini teratasi setelah saya secara manual menambahkan file log4j.properties di folder src / test / resources.

Menambahkan kode di bawah ini ke file log4j.properties memecahkan masalah:

# 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
sumber
1

Saya mengalami masalah ini ketika mencoba membangun jar yang dapat dieksekusi dengan maven di intellij 12. Ternyata karena file java manifest tidak menyertakan jalur kelas, file properti log4j tidak dapat ditemukan di tingkat root (di mana file jar dijalankan dari.)

FYI saya mendapatkan logger seperti ini:

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

Dan saya bisa membuatnya berfungsi dengan file pom yang termasuk ini:

         <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
sumber
1

Pastikan proyek Anda terbuka di Eclipse, lalu klik menu "Run" di bagian atas Eclipse dan klik yang berikut ini:

  1. Lari

  2. Jalankan Konfigurasi

  3. Classpath (tab)

  4. Entri Pengguna

  5. tambahkan toples di sebelah kanan

  6. tambahkan file jar log4j

  7. Menerapkan

  8. Lari

Pesan kesalahan seharusnya tidak lagi muncul.

Varaj Vignesh
sumber
1

Alasannya mungkin karena kurangnya kata staticdalam beberapa:

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

Jika saya membuat logger bidang instance, saya mendapatkan peringatan yang persis seperti ini:

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

Yang lebih buruk, peringatan itu tidak menunjukkan ProcessorTest, di mana kesalahan itu terjadi, tetapi ke kelas yang sama sekali berbeda (Pengirim) sebagai sumber masalah. Yang kelas memiliki set logger yang benar dan kebutuhan tidak ada perubahan! Kita bisa mencari masalah untuk waktu yang lama!

Gangnus
sumber
1

Saya menghadapi masalah yang sama ketika saya menggunakan log4j2. Masalah saya disebabkan oleh penggunaan pustaka dependen yang salah:

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

Sebagai gantinya, saya harus menggunakan:

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

Dalam kasus saya, saya memiliki log4j2.xml didefinisikan dalam direktori "sumber daya" saya, dan ditentukan untuk menggunakannya dengan:

System.setProperty("log4j.configurationFile", "log4j2.xml");
John Zhang
sumber
1

Log4J menampilkan pesan peringatan ini ketika kode Java Log4j sedang mencari untuk membuat baris log pertama di program Anda.

Saat ini, Log4j membuat 2 hal

  1. itu mencari untuk menemukan log4j.propertiesfile
  2. itu mencari untuk instantiate append mendefinisikan dalam log4j.properties

Jika log4Jtidak menemukan log4j.propertiesfile atau jika append yang dideklarasikan log4j.rootloggertidak didefinisikan di tempat lain dalam log4j.propertiesfile pesan peringatan ditampilkan.

PERHATIAN: konten file Properties harus benar.

Konten berikut ini TIDAK benar

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

karena fileappender dinyatakan dalam RENDAH-KASUS dalam log4j.rootloggerpernyataan dan didefinisikan dalam pernyataan log4j.appender menggunakan UPPER-CASE!

File yang benar adalah

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

Jika MAVEN digunakan, Anda harus meletakkan file log4j.properties di src/main/resourcesDAN mulai membangun MAVEN.

File properti Log4j.prop kemudian disalin dalam target/classesfolder.

Log4J menggunakan log4j.propertiesfile yang ditemukan di dalamnya target/classes!

schlebe
sumber
1

Saya punya masalah ini juga. Saya hanya lupa menandai direktori sumber daya di IntelliJ IDEA

  1. Klik kanan pada direktori Anda
  2. Tandai direktori sebagai
  3. Sumber daya root
Sadap
sumber
1

Jika Anda menggunakan Eclipse dan masalah ini muncul entah dari mana setelah semuanya bekerja dengan baik sebelumnya, coba buka Project - Clean - Clean.

stijena
sumber
0

Instalasi Eclipse saya tidak dapat menemukan log4j.propertiesketika menjalankan tes JUnit dari Eclipse, meskipun file tersebut berada disrc/test/resources .

Alasannya adalah bahwa Eclipse (atau konektor m2e ) tidak menyalin konten dari src/test/resourceske folder output yang diharapkan target/test-classes- akar penyebabnya adalah bahwa dalam properti proyek di bawah Java Build Path -> Source tab -> Folder sumber pada build path -> src / tes / sumber daya , entah bagaimana ada Excluded: **entri. Saya menghapus entri yang dikecualikan .

Atau, saya bisa menyalin secara manual src/test/resources/log4j.propertieske target/test-classes/log4j.properties.

Abdull
sumber
0

Jika log4j.propertiesmemang ada di classpath, Anda menggunakan Spring Boot untuk membuat file WAR untuk ditempatkan ke server aplikasi, Anda menghilangkan web.xmlfile yang mendukung autoconfigure Spring Boot, dan Anda tidak mendapatkan pesan log apa pun, Anda perlu secara eksplisit konfigurasikan Log4j. Dengan asumsi Anda menggunakan 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
sumber
0

Mungkin menambahkan proyek relevent berisi log4j di java build path, saya menambahkan mahout_h2o ke dalamnya ketika saya menemukan masalah ini dalam proyek mahout menggunakan eclipse, itu berhasil!

NightWind
sumber
0

jika Anda bekerja sama dengan banyak proyek, Anda mungkin menghadapi masalah gaya.

* Anda harus memiliki satu file lof4j.properties dan file ini termasuk properti log dari proyek lain.

* Di samping Anda dapat mencoba untuk menempatkan file properti log4j ke jalur src ketika proyek ini bekerja Linux OS, libs proyek lain dan file log4.properties dapat di bawah satu folder ke lokasi di classpath.

yasin
sumber
0

Impor pertama:

 import org.apache.log4j.PropertyConfigurator;

Kemudian tambahkan kode di bawah ini ke metode utama:

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

Buat file di jalur ke dan tambahkan kode di bawah ini ke file itu.

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
sumber
0

Solusi di situs ini berfungsi untuk saya https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Saya sekarang tidak melihat peringatan sama sekali dari log4j

Saya memasukkan ini ke file log4j.properties yang saya masukkan ke 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
sumber
0

Pertama-tama: Buat file 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

Tempatkan di src / main / resources /

Setelah itu, gunakan 2 dependensi ini:

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

Perlu menambahkan ketergantungan akhir ini ke file 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>
ahli bedah hidung
sumber
0

Pertimbangkan argumen JVM log4j Dlog4j.configuration

Secara umum:

Tambahkan argumen JVM yang menunjukkan file konfigurasi log4j. Sintaksnya seperti berikut:

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

Contoh dari baris perintah nyata adalah seperti berikut:

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

Untuk pengguna IntelliJ IDE:

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

Kiat:

1.Eclipse IDE pengguna akan menemukan pendekatan yang setara

2.Untuk editor konfigurasi run / debug, sangat mungkin bahwa, pada awal kali, file yang dapat dieksekusi khusus Anda tidak ada. Bergantung pada ukuran proyek yang sedang Anda kerjakan, mungkin tidak menyenangkan untuk menavigasi direktori untuk menemukannya. Ini tidak terlalu merepotkan jika Anda hanya menjalankan / mengeksekusi file (klik putar) satu kali sebelum melanjutkan untuk menjalankan / men-debug konfigurasi tidak peduli apa hasil eksekusi.

3. Perhatikan direktori kerja Anda, jalur relatif, dan classpath.

Farlon Souto
sumber
-4

Dalam java eclipse salin conf_ref Anda ke folder conf.

Anuj Pandey
sumber