2012-01-17 28 views
9

Tôi đang gặp một số sự cố khi đặt tệp log4j.properties của mình trên classpath. Tôi có thể sử dụng nó khi tôi đang phát triển (Eclipse Indigo) nhưng, khi tôi xuất khẩu ứng dụng của tôi như là một JAR, tôi không thể.Sự cố khi đặt đường dẫn lớp log4.properties

Tôi đã thực hiện bằng tay một file MANIFEST.MF cho JAR xuất khẩu:

Manifest-Version: 1.0 
Main-Class: main.Program 
Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar 

Và sau đó với đặt JAR về tổ chức tập tin này:

folder 
    |-------- app.jar 
    |-------- lib 
      |--------- log4j.properties 
      |--------- log4j-1.2.15.jar 

Khi tôi cố gắng chạy app.jar, họ thấy log4j.jar nhưng không log4j.properties:

log4j:WARN No appenders could be found for logger (main.Program). 
log4j:WARN Please initialize the log4j system properly. 

log4j.pro My perties tập tin đó là như thế này:

log4j.rootLogger=INFO, stdout, file 

PATTERN=[%d] [%p] [%c{1}]: %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=${PATTERN} 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.File=${logger_file_path} 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=${PATTERN} 

Trả lời

11

Đừng đặt log4j.properties bản thân trong classpath, nhưng thư mục chứa tập tin đó.

Class-Path: lib lib/log4j-1.2.15.jar 
+0

Cung cấp cùng một lỗi – rnunes

+0

Tôi đã sửa đổi việc thay đổi log4j.properties thành "thư mục" (trong đó JAR tồn tại) và thay đổi đường dẫn lớp thành ". Lib/log4j-1.2.15.jar". Trước đó, tôi đã thử một số đường dẫn thư mục đến "lib" (ví dụ:/lib /, lib /, ./lib/) và không có thư mục nào trong số chúng hoạt động. – rnunes

+0

Một chủ đề cũ, nhưng chỉ muốn thêm rằng phương pháp này thực sự hoạt động. Một điều tốt nữa về cách tiếp cận này là người dùng thực sự có thể thay đổi cấp độ nhật ký nếu họ muốn vì tệp cấu hình nằm ngoài bất kỳ dấu hiệu nào. – arunskrish

1

Thêm log4j.properties to app.jar.

+0

Hiện tại tôi muốn có nó bên ngoài – rnunes

12

Có ba cách tôi biết.

  1. Thêm log4j.properties để app.jar
  2. Đặt log4j.properties đến "thư mục" (nơi JAR tồn tại) và thay đổi đẳng cấp đường dẫn đến .lib/log4j-1.2.15.jar.
  3. Đặt số log4j.properties vào thư mục có tên "conf" chẳng hạn và thay đổi đường dẫn lớp thành ./conf/.

Tôi đã thử, nó hoạt động.

+3

Cảm ơn bạn rất nhiều. Tiếng Anh của tôi rất nghèo! –

17

hơn một cách để làm điều này: -Dlog4j.configuration=file:"./log4j.properties"

+1

Để sử dụng phiên bản log4j 2: -Dlog4j.configurationFile = tệp: "YourPathHERE/log4j2.xml" – DataMania

-1

cố gắng để thực hiện:

javar -jar -Dlog4j.configuration = file: "log4j.properties ./" app.jar

0

tôi đã thử câu trả lời của Jesper, và lúc đầu nó không hoạt động. Sau đó, tôi đã thử với

Class-Path: lib/ lib/log4j-1.2.15.jar 

Và sau đó nó hoạt động sau đó.

Các vấn đề liên quan