2014-10-10 151 views
1

我在我的Java桌面應用程序的項目中實現了Log4J日誌記錄,它工作正常。Log4j項目之間的共享

現在我有另一個項目,並希望兩個項目共享相同的日誌文件。這兩個項目都捆綁在我的應用程序中,因此他們共享日誌文件很有意義。這怎麼可能 ?

目前,這是我所:

LoggerClass:

package com.application.logging; 

import org.apache.log4j.Logger; 

public class LoggingSample { 
    private static Logger logger = Logger.getLogger("Visualx"); 

    public static Logger getLogger() { 

     return logger; 
    } 

    public static void setLogger(Logger logger) { 
     LoggingSample.logger = logger; 
    } 
} 

Log4j.properties文件:

# Log levels 
log4j.rootLogger=INFO,CONSOLE,R 
# Appender Configuration 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
# Pattern to output the caller's file name and line number 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 
# Rolling File Appender 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
# Path and file name to store the log file 
log4j.appender.R.File=${user.home}/log/testlog.log 
log4j.appender.R.MaxFileSize=200KB 
# Number of backup files 
log4j.appender.R.MaxBackupIndex=2 
# Layout for Rolling File Appender 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d - %c - %p - %m%n 

回答

1

即使是技術可能(我對此表示懷疑,因爲兩個進程需要同時打開一個文件),這通常不被認爲是最佳實踐。

更好地寫入單獨的文件並確保實際的日誌語句有意義,例如使用允許通過所有日誌文件跟蹤事件的引用。

如果你真的需要合併/包東西放在一起,我建議以實施在操作系統級別(的cronjob,...)

+0

一個好處,我有是,至少我的應用程序是單線程的。所以如果確實存在這樣的解決方案,那麼我不必關心必須同步問題。 – rockstar 2014-10-10 05:22:08