2010-06-04 50 views
18

Tôi muốn ứng dụng web của tôi để đăng nhập vào các tập tin với con đường này: webapp/logs/log4j tương đối đường dẫn tập tin

tôi có thể thiết lập các đường dẫn tuyệt đối trong file log4j.properties, nhưng cấu trúc thư mục môi trường sản xuất của Sẽ khác. Có cách nào tôi có thể làm được không?

Dưới đây là cách tôi làm:

log4j.appender.f=org.apache.log4j.RollingFileAppender 
log4j.appender.f.layout=org.apache.log4j.PatternLayout 
log4j.appender.f.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.f.File=log.out 
log4j.appender.f.MaxFileSize=100KB 

này được in ấn các bản ghi vào một file có tên log.log trong thư mục eclipse của tôi (c: // eclipse). Tôi đang sử dụng Tomcat 6.

+0

vâng, tôi xin lỗi – Bob

Trả lời

34

log4j có khả năng mở rộng thuộc tính hệ thống, vì vậy nếu môi trường sản xuất của bạn đặt thuộc tính cho thư mục mà bạn muốn đặt tệp nhật ký vào, bạn có thể tham chiếu từ log4j. tệp thuộc tính.

Ví dụ, chúng tôi cũng triển khai các ứng dụng web trên Tomcat. Tomcat thiết lập thuộc tính hệ thống có tên là catalina.base trỏ đến thư mục cơ sở Tomcat. Một cấu hình log4j trông như thế này:

log4j.appender.f.File = ${catalina.base}/logs/myapp.log 

Sẽ cho kết quả trong file myapp.log được lưu trữ trong thư mục bản ghi dưới Tomcat thư mục cài đặt.

+0

cảm ơn bạn rất nhiều! – Bob

+5

Trên Debian (bao gồm cả Ubuntu), $ {catalina.home} đưa bạn đến hư không vì điểm đó tại/usr/share/tomcat6 không có liên kết đến/var/log/tomcat6. Logfile của bạn sẽ không được tạo. $ {catalina.base} trỏ tại/var/lib/tomcat6 có một liên kết có tên là logs to/var/log/tomcat6 và là một trong những cái để sử dụng. Hy vọng điều này sẽ giúp một ai đó. –

2

log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = $ {} catalina.home /logs/myapp.log
log4j.appender.A1.DatePattern =' -'yyyy-MM-dd'.log '

Trong ví dụ này, tệp nhật ký hiện tại của bạn sẽ được đặt tên là "myapp.log". Vào lúc nửa đêm (hoặc khi mục nhập nhật ký đầu tiên xảy ra vào ngày hôm sau) "myapp.log" sẽ được đổi tên thành "myapp-yyyy-mm-dd.log" (ví dụ:
"myapp-2010-12-21.log ") và" myapp.log "mới sẽ được tạo.

10

hết sức mình để cung cấp:
log4j.appender.f.File = ./myapp.log

. đại diện cho thư mục hiện tại (thường là thư mục gốc của dự án). Điều này cũng hoạt động trên các hệ điều hành khác nhau. Trong trường hợp khi bạn sử dụng $ {catalina.home}, bạn có thể không chạy ứng dụng web thông qua tomcat.

bài này đã giúp tôi vượt qua vấn đề này:
http://www.matjazcerkvenik.si/Site/Java::Log4j_Properties.html (cập nhật liên kết http://www.matjazcerkvenik.si/developer/java-log4j.php)

Cheers!

+2

Không phải là thư mục hiện tại theo mặc định? (tức là, việc thêm "./" vào đường dẫn sẽ không tạo ra sự khác biệt nào) – golimar

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