Không tìm thấy appender cho logger (log4j)?


369

Tôi đã đặt log4j vào buildpath của mình, nhưng tôi nhận được thông báo sau khi chạy ứng dụng của mình:

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.

Những cảnh báo này có ý nghĩa gì? Các ứng dụng ở đây là gì?


5
Đó dường như là một cảnh báo thời gian chạy. Bạn có chắc chắn bạn nhìn thấy điều này khi bạn biên dịch?
maba

5
Bạn đã thử truy cập URL trong dòng cảnh báo cuối cùng chưa?
Jesper

4
Đúng!!! nhưng nó không nói nhiều ... Tôi phát hiện ra rằng tôi cần một tệp thuộc tính để cấu hình appender của mình!
châm ngôn

Chỉnh sửa thủ công các tập tin cấu hình để thêm appender. Hãy chắc chắn rằng bạn có tài liệu cấu hình đúng và hợp lệ.
La Mã C

Câu trả lời:


464

Đây giới thiệu ngắn để log4j dẫn là một chút cũ nhưng vẫn còn hiệu lực.

Hướng dẫn đó sẽ cung cấp cho bạn một số thông tin về cách sử dụng loggers và appender.


Chỉ để giúp bạn đi, bạn có hai cách tiếp cận đơn giản bạn có thể thực hiện.

Đầu tiên là chỉ cần thêm dòng này vào phương thức chính của bạn:

BasicConfigurator.configure();

Cách tiếp cận thứ hai là thêm log4j.propertiestệp tiêu chuẩn này (lấy từ hướng dẫn đã đề cập ở trên) vào đường dẫn lớp của bạn:

# 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

3
Chỉ cần bước đầu tiên là ok. Trích dẫn từ giới thiệu ngắn về hướng dẫn log4j
ray6080

65
Đối với các vấp ngã mới ... hãy thêm tệp log4j.properIES vào src / main / resource và giả sử bạn có một dự án maven. Nội dung trong src / main / resource được bao gồm trên đường dẫn lớp.
keni

3
Trong cài đặt mô-đun mở ý tưởng IntelliJ và chọn thư mục tài nguyên của bạn và nhấp vào tài nguyên, nó sẽ tự động thêm mọi tài nguyên của bạn vào đường dẫn lớp.
Waqas

1
Không giúp được gì. Tôi sử dụng Eclipse neon cho C ++ và tôi đã đặt log4j.properations cùng với thực thi nhật thực và không giúp được gì
Nadav B

log4j.rootLogger=DEBUG, A1là dòng tôi đã bỏ lỡ tất cả các thời gian.
Mohammad Faisal

74

Có vẻ như bạn cần thêm vị trí log4j.propertiestệp của mình vào Classpath trong Eclipse.

Hãy chắc chắn rằng dự án của bạn đang mở trong Eclipse, sau đó nhấp vào menu "Run" ở đầu Eclipse và nhấp vào các mục sau:

  1. Chạy
  2. Chạy cấu hình
  3. Classpath (tab)
  4. Mục nhập của người dùng
  5. Nâng cao (nút bên phải)
  6. Thêm thư mục
  7. sau đó điều hướng đến thư mục chứa tệp log4j.properIES của bạn
  8. Ứng dụng
  9. Chạy

Thông báo lỗi sẽ không còn xuất hiện.


Thông báo cảnh báo không xuất hiện ngay bây giờ nhưng các bản ghi không được ghi ở vị trí mong muốn
Arpan Saini

48

Giải pháp nhanh chóng:

  1. thêm mã vào chức năng chính :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. tạo một tệp có tên log4j.properies tại / 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

Đặt tệp log4j.properIES trong thư mục tài nguyên như src / test / resource
Alok

Để tránh khai báo rõ ràng về đường dẫn log4j.properIES; đặt nó trong thư mục dự án của bạn và truy cập nó như String log4jConfPath = System.getProperty ("user.dir") + File.separator + "log4j.properies";
Amimo Benja

36

Đây chỉ là một cảnh báo.

Sửa chữa

Điều này xảy ra khi các tệp cấu hình mặc định log4j.propertieslog4j.xmlkhông thể tìm thấy và ứng dụng không thực hiện cấu hình rõ ràng.

Để khắc phục điều đó, chỉ cần tạo / sao chép log4j.propertieshoặc log4j.xmlvào một vị trí của bạn trên đường dẫn lớp (thường giống như các tệp jar).

Tùy chọn thiết lập tùy chọn java : -Dlog4j.configuration=file:///path/to/log4j.properties.

log4jsử dụng Thread.getContextClassLoader().getResource()để định vị các tệp cấu hình mặc định và không trực tiếp kiểm tra hệ thống tệp. Biết vị trí thích hợp để đặt log4j.propertieshoặc log4j.xmlyêu cầu hiểu chiến lược tìm kiếm của trình nạp lớp đang sử dụng. log4jkhông cung cấp cấu hình mặc định do đầu ra cho bàn điều khiển hoặc hệ thống tệp có thể bị cấm trong một số môi trường.

Gỡ lỗi

Để gỡ lỗi, bạn có thể thử sử dụng -Dlog4j.debug=truetham số.

Cấu hình của log4j.properties

Cấu hình mẫu của 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

Đây là một tập tin cấu hình khác sử dụng nhiều appender:

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

Solr Apache

Nếu sử dụng Solr , sao chép <solr>/example/resources/log4j.propertiesvào một vị trí trên đường dẫn lớp .

Cấu hình mẫu của log4j.propertiesSolr như sau:

#  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

Xem thêm:


13

Hầu hết các câu trả lời ở đây cho thấy rằng log4j.properties tệp được đặt ở đúng vị trí (đối với dự án maven, nó nên được đặt ở src/main/resources)

Nhưng đối với tôi, vấn đề là tôi log4j.propertieskhông được cấu hình đúng. Đây là một mẫu phù hợp với tôi, bạn có thể dùng thử trước.

# 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

1
Thực tế là log4j coi "không thể tìm thấy tệp" và "thông số không đầy đủ trong tệp" là cùng một lỗi là một bộ lọc thời gian.
Ed Norris

1
Đối với tôi, đây là câu trả lời tốt nhất. Tôi bỏ phiếu và tôi đã thêm một số giải thích trong câu trả lời của bạn.
schlebe

Câu trả lời tốt nhất cho tôi !!!
Nasqueweaponer

8

Như đã giải thích trước đó, có 2 cách tiếp cận

Đầu tiên là chỉ cần thêm dòng này vào phương thức chính của bạn:

BasicConfigurator.configure();

Cách tiếp cận thứ hai là thêm log4j.properies tiêu chuẩn này tệp vào đường dẫn lớp của bạn:

Trong khi thực hiện phương pháp thứ hai, bạn cần đảm bảo rằng bạn khởi tạo tệp đúng cách, vd.

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

Hãy chắc chắn rằng bạn tạo thư mục cần thiết để lưu trữ tệp nhật ký.


Tôi đã gặp vấn đề tương tự và tôi đã sử dụng BasicConfigurator.configure (); trong phương thức chính và bây giờ mã đang thực thi đúng.
Surabhi Pandey

7

Bạn sử dụng Loggermã của bạn để đăng nhập một tin nhắn. Các Appenderlà một Object nối vào một Loggerđể viết thông điệp tới một mục tiêu cụ thể. Có FileAppenderđể ghi vào tập tin văn bản hoặcConsoleAppender ghi vào Bảng điều khiển. Bạn cần hiển thị mã của mình về thiết lập Logger và Appender để được trợ giúp thêm.

vui lòng đọc hướng dẫn để hiểu rõ hơn về sự tương tác của Logger và Appender.


6

Hãy chắc chắn rằng tập tin thuộc tính đã được đặt đúng. Và một lần nữa, có vẻ như trình biên dịch không thể tìm thấy tệp thuộc tính, bạn có thể đặt như sau tại pom (chỉ khi bạn sử dụng dự án maven).

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >

Điều này! Tôi đã dành hàng giờ để tìm một câu trả lời. Mã trường hợp của tôi hoạt động tốt trong Linux nhưng có lỗi này trong windows (cùng NB IDE) và tất cả các giải pháp trên không hoạt động!
Tiana987642

5

Tôi nhận được lỗi tương tự. Đây là vấn đề dẫn đến thông báo lỗi này:

Tôi tạo một số đối tượng sử dụng Logger trước khi cấu hình log4j:

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

Giải pháp: Định cấu hình log4j ở đầu trong phương thức chính:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file

Cảm ơn bạn rất nhiều!!! Mọi người chỉ giả sử Spring hoặc Tomcat, hoặc bất cứ điều gì để khởi tạo cấu hình.
Áo gió


3

Một lý do khác có thể xảy ra (trong RCP4) là bạn đang sử dụng nhiều khung ghi nhật ký trong tệp mục tiêu của mình. Ví dụ, điều này sẽ xảy ra nếu bạn sử dụng kết hợp slf4j, log4j và ch.qos.logback.slf4j trong tab nội dung tệp mục tiêu của bạn.


3

Thêm mã sau đây làm mã đầu tiên:

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

2

Trong trường hợp của tôi, lỗi là cờ " nghiện ". Nếu đó là "sai" cho gói dự án gốc của bạn, thì các gói con sẽ không có appender và bạn sẽ thấy lỗi " appender not find ".


2

Tôi gặp vấn đề tương tự khi tôi cố chạy lớp kiểm tra JUnit.

Vấn đề được giải quyết sau khi tôi thêm thủ công tệp log4j.properIES trong thư mục src / test / resource.

Thêm mã dưới đây vào tệp log4j.properIES đã giải quyết vấn đề:

# 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

1

Tôi gặp phải vấn đề này khi cố gắng xây dựng một tệp thực thi với maven trong intellij 12. Hóa ra là vì tệp kê khai java không bao gồm một đường dẫn lớp mà tệp thuộc tính log4j không thể tìm thấy ở cấp gốc (trong đó tập tin jar đã được thực thi từ.)

FYI Tôi đã nhận được logger như thế này:

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

Và tôi đã có thể làm cho nó hoạt động với một tệp pom bao gồm:

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

1

Hãy chắc chắn rằng dự án của bạn đang mở trong Eclipse, sau đó nhấp vào menu "Run" ở đầu Eclipse và nhấp vào các mục sau:

  1. Chạy

  2. Chạy cấu hình

  3. Classpath (tab)

  4. Mục nhập của người dùng

  5. thêm bình bên phải

  6. thêm tập tin jar log4j

  7. Ứng dụng

  8. Chạy

Thông báo lỗi sẽ không còn xuất hiện.


1

Lý do có thể thiếu từ statictrong một số:

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

Nếu tôi tạo logger trường ví dụ, tôi sẽ nhận được chính xác cảnh báo này:

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

Điều tồi tệ hơn là, các điểm cảnh báo không phải là ProcessorTest, nơi sai lầm sống, mà là một lớp hoàn toàn khác (Người gửi) là nguồn gốc của các vấn đề. Lớp đó có bộ logger chính xác và không cần bất kỳ thay đổi nào! Chúng ta có thể tìm kiếm vấn đề cho các lứa tuổi!


1

Tôi gặp vấn đề tương tự khi tôi sử dụng log4j2. Vấn đề của tôi là do sử dụng thư viện phụ thuộc sai:

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

Thay vào đó, tôi nên sử dụng:

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

Trong trường hợp của tôi, tôi có một log4j2.xml được xác định trong thư mục "tài nguyên" của mình và được chỉ định sử dụng nó bằng cách:

System.setProperty("log4j.configurationFile", "log4j2.xml");

1

Log4J hiển thị thông báo cảnh báo này khi mã Java Log4j đang tìm kiếm để tạo một dòng nhật ký đầu tiên trong chương trình của bạn.

Tại thời điểm này, Log4j thực hiện 2 điều

  1. nó tìm kiếm log4j.propertiestập tin
  2. nó tìm kiếm để khởi tạo trình định nghĩa appender trong log4j.properties

Nếu log4Jkhông tìm thấy log4j.propertiestệp hoặc nếu appender khai báo log4j.rootloggerkhông được xác định ở nơi khác trong log4j.propertiestệp, thông báo cảnh báo sẽ được hiển thị.

THẬN TRỌNG: nội dung của tệp Thuộc tính phải chính xác.

Nội dung sau KHÔNG đúng

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

bởi vì fileappender được khai báo trong LOWER-CASE trong log4j.rootloggercâu lệnh và được định nghĩa trong câu lệnh log4j.appender bằng UPPER-CASE!

Một tập tin chính xác sẽ là

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

Nếu MAVEN được sử dụng, bạn phải đặt các tệp log4j.properIES vào src/main/resourcesVÀ bắt đầu xây dựng MAVEN.

Tập tin Log4j.properIES sau đó được sao chép trong target/classesthư mục.

Log4J sử dụng log4j.propertiestập tin mà nó tìm thấy target/classes!


1

Tôi cũng có vấn đề này. Tôi chỉ quên đánh dấu thư mục tài nguyên trong IntelliJ IDEA

  1. Nhấp chuột phải vào thư mục của bạn
  2. Đánh dấu thư mục là
  3. Tài nguyên gốc

1

Nếu bạn đang sử dụng Eclipse và vấn đề này đã xuất hiện từ trước sau khi mọi thứ hoạt động tốt trước đó, hãy thử Project - Clean - Clean.


0

Cài đặt Eclipse của tôi không thể tìm thấy log4j.propertieskhi chạy các bài kiểm tra JUnit từ Eclipse, mặc dù tệp được đặt tại src/test/resources.

Lý do là vì Eclipse (hoặc trình kết nối m2e ) không sao chép nội dung từ src/test/resourcesthư mục đầu ra dự kiến target/test-classes- nguyên nhân gốc là do các thuộc tính của dự án trong Đường dẫn xây dựng Java -> tab Nguồn -> Thư mục nguồn trên đường dẫn xây dựng -> src / kiểm tra / tài nguyên , bằng cách nào đó đã có một Excluded: **mục. Tôi loại bỏ mục đó bị loại trừ .

Ngoài ra, tôi có thể đã sao chép thủ công src/test/resources/log4j.propertiesvào target/test-classes/log4j.properties.


0

Nếu log4j.propertiesthực sự là trên đường dẫn lớp, bạn đang sử dụng Spring Boot để tạo tệp WAR để triển khai cho máy chủ ứng dụng, bạn đang bỏ qua một web.xmltệp có lợi cho tự động cấu hình của Spring Boot và bạn không nhận được bất kỳ thông điệp nhật ký nào, bạn cần phải rõ ràng cấu hình Log4j. Giả sử bạn đang sử dụng 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...
}

0

Có thể thêm dự án liên quan chứa log4j trong đường dẫn xây dựng java, tôi thêm mahout_h2o vào nó khi tôi gặp vấn đề này trong một dự án mahout sử dụng nhật thực, nó hoạt động!


0

nếu bạn làm việc cùng với rất nhiều dự án, bạn có thể phải đối mặt với một vấn đề về phong cách.

* bạn phải có một tệp lof4j.properIES và tệp này được bao gồm các thuộc tính nhật ký của dự án khác.

* Bên cạnh đó, bạn có thể thử đặt các tệp thuộc tính log4j vào đường dẫn src khi dự án hoạt động Linux OS, các tệp của dự án khác và các tệp log4.properies có thể nằm dưới một thư mục vào một vị trí trên đường dẫn lớp.


0

Nhập khẩu đầu tiên:

 import org.apache.log4j.PropertyConfigurator;

Sau đó thêm mã dưới đây vào phương thức chính:

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

Tạo một tệp tại đường dẫn đến và thêm mã dưới đây vào tệp đó.

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

0

Giải pháp trên trang web này đã làm việc cho tôi https://crunchify.com/java-how-to-configure-log4j-logger-property-c chính xác / . Bây giờ tôi không thấy cảnh báo nào cả từ log4j

Tôi đặt cái này trong tệp log4j.properIES mà tôi đặt trong src / main / resource

# 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

0

Trước hết: Tạo tệp log4j.properIES

# 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

Đặt nó trong src / main / resource /

Sau đó, sử dụng 2 phụ thuộc này:

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

Cần thêm phụ thuộc cuối cùng này vào tệp 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>

0

Hãy xem xét đối số JVM log4j Dlog4j.configuration

Nói chung:

Thêm đối số JVM chỉ ra tệp cấu hình log4j. Cú pháp giống như sau:

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

Một mẫu của một dòng lệnh thực sự giống như sau:

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

Đối với người dùng IntelliJ IDE:

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

Lời khuyên:

1.Eclipse IDE người dùng sẽ tìm thấy một cách tiếp cận tương đương

2.Đối với trình chỉnh sửa cấu hình chạy / gỡ lỗi, rất có thể, vào đầu thời điểm, tệp thực thi cụ thể của bạn không có ở đó. Tùy thuộc vào quy mô của dự án mà bạn hiện đang làm việc, việc điều hướng các thư mục để tìm thấy nó có thể khó chịu. Sẽ ít rắc rối hơn nếu bạn chỉ chạy / thực thi tệp (nhấp vào phát) một lần trước khi tiến hành chạy / gỡ lỗi cấu hình cho dù kết quả thực hiện là gì.

3. Hãy chú ý đến thư mục làm việc của bạn, các đường dẫn tương đối và đường dẫn lớp.


-4

Trong nhật thực java, sao chép thư mục của bạn vào thư mục conf.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.