2010-07-10 69 views
6

Đường dẫn tương đối được sử dụng trong tệp log4j.properties.Tôi có thể lập trình tìm nơi lưu trữ các tệp nhật ký log4j ở đâu?

Làm cách nào tôi có thể tìm đường dẫn tuyệt đối theo chương trình nơi lưu trữ nhật ký?

+0

Nhưng ... tại sao bạn muốn làm điều đó? Log4J là bằng cách nào đó phải trừu tượng từ bạn. –

+0

@Pascal, muốn cung cấp quyền truy cập nhật ký qua giao diện trực quan để tải xuống. – JavaRocky

Trả lời

3

Tôi nghĩ một cách là như thế này:

kể từ khi con đường là liên quan đến sở hữu hệ thống

con đường nên tương đối "user.dir" = ./app.log trở thành {user.dir}/app.log

9

Từ: http://www.gunith.com/2010/11/how-to-get-the-file-path-of-a-log4j-log-file/

Giả sử tệp log4j.properties như sau,

log4j.logger.migrationlog = INFO, migration 
log4j.appender.migration = org.apache.log4j.RollingFileAppender 
log4j.appender.migration.File = C:/work/log/migration.log 
log4j.appender.migration.MaxFileSize=20MB 
log4j.appender.migration.MaxBackupIndex=1 
log4j.appender.migration.layout = org.apache.log4j.PatternLayout 
log4j.appender.migration.layout.conversionPattern = %d %-5p %c - %m%n 

Trong trường hợp này, mã Java của bạn nên được như sau,

Logger logger = Logger.getLogger("migrationlog"); //Defining the Logger 
FileAppender appender = (FileAppender)logger.getAppender("migration"); 
return new File(appender.getFile()); 

Lưu ý rằng migrationlog đã được sử dụng để tạo ra các đối tượng logger trong dòng đầu tiên. Và di chuyển được sử dụng để lấy FileAppender mà lần lượt gọi getFile() để nhận đối tượng Tệp nhật ký.

+0

Chỉ một sai lầm tôi đã làm: Hãy xem xét sử dụng '(FileAppender) logger.getRootLogger(). GetAppender (" di chuyển ")' trong trường hợp bạn làm việc với trình ghi gốc. Khác bạn sẽ nhận được một NullPointerException. – muffin

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