在相同的博客域上部署三个项目.但是log4j在一个文件中写入所有日志



在相同的WebLogic域上部署三个项目。但是log4j在一个文件中写入所有日志。但是我想将日志写入三个文件(每个项目都有自己的日志文件(。如何配置log4j。

我假设您在log4j属性中有类似的东西:

 log4j.appender.file.File=C:\logging.log

您可以做的是用:

替换该行
 log4j.appender.file.File=${mylog}

然后在每个项目中,假设您有为每个项目配置的log4j.properties,则应该能够做:

 System.setProperty("mylog", "specific_filepath_for_project");

例如,您的两个软件包的日志文件为:

com.abhi.packageOne;  ->  packageOneFile.log
com.abhi.packageTwo;  ->  packageTwoFile.log

将rootlogger添加为文件或控制台。您可以根据您的要求保留任何日志级别,即跟踪,信息,错误等

log4j.rootLogger=Debug, file

您必须为两个软件包创建两个新的附录

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=/path/main.log
log4j.appender.MAIN_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.PACKAGE_ONE=org.apache.log4j.RollingFileAppender
log4j.appender.PACKAGE_ONE.File=/path/packageOneFile.log
log4j.appender.PACKAGE_ONE.layout=org.apache.log4j.PatternLayout
log4j.appender.PACKAGE_TWO=org.apache.log4j.RollingFileAppender
log4j.appender.PACKAGE_TWO.File=/path/packageTwoFile.log
log4j.appender.PACKAGE_TWO.layout=org.apache.log4j.PatternLayout

您需要相应地设置添加性。

什么是成瘾性?

为了避免日志中的冗余,我们可以使用log4j添加性。只需将log4j记录器的添加性属性设置为false,然后将即将到达该记录器的日志消息将不会传播到其父loggers。因此,我们的新log4j配置文件将是:

log4j.additivity.com.abhi.packageOne=false
log4j.additivity.com.abhi.packageTwo=false
log4j.logger.com.abhi.packageOne=DEBUG, PACKAGE_ONE
log4j.logger.com.abhi.packageTwo=DEBUG, PACKAGE_TWO
log4j.rootLogger=DEBUG, MAIN_LOG 

其中main_log是您的常规日志文件。如果您还想在main_log中从package_one和package_two打印logs,请在下面包含以下行。

log4j.rootLogger=DEBUG, MAIN_LOG , PACKAGE_ONE , PACKAGE_TWO

相关内容

最新更新