Đườ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ý?
Đườ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ý?
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
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ý.
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
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. –
@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