2014-10-10 106 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