log4j的配置和多日志文件生成

问题1:log4j输出多个自定义日志文件

log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。

#debug level and console
log4j.rootLogger=DEBUG, A1

#console output 
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=INFO
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %p [%c] - %m%n

#file output
log4j.logger.CTCCSOCEKET_REPORT=INFO, CTCCSOCKET_REPORT
log4j.appender.CTCCSOCKET_REPORT=org.apache.log4j.RollingFileAppender
log4j.appender.CTCCSOCKET_REPORT.Threshold=INFO
log4j.appender.CTCCSOCKET_REPORT.File=./logs/ctccsocket-report-msg.log
log4j.appender.CTCCSOCKET_REPORT.Append=8000KB
log4j.appender.CTCCSOCKET_REPORT.MaxFileSize=8000KB
log4j.appender.CTCCSOCKET_REPORT.MaxBackupIndex=20
log4j.appender.CTCCSOCKET_REPORT.layout=org.apache.log4j.PatternLayout
log4j.appender.CTCCSOCKET_REPORT.layout.ConversionPattern=%d %p [%c] - %m%n


#file output
log4j.logger.CTCCSOCEKET_SYNC=INFO, CTCCSOCKET_SYNC
log4j.appender.CTCCSOCEKET_SYNC=org.apache.log4j.RollingFileAppender
log4j.appender.CTCCSOCEKET_SYNC.Threshold=INFO
log4j.appender.CTCCSOCEKET_SYNC.File=./logs/ctccsocket-sync-msg.log
log4j.appender.CTCCSOCEKET_SYNC.Append=8000KB
log4j.appender.CTCCSOCEKET_SYNC.MaxFileSize=8000KB
log4j.appender.CTCCSOCEKET_SYNC.MaxBackupIndex=20
log4j.appender.CTCCSOCEKET_SYNC.layout=org.apache.log4j.PatternLayout
log4j.appender.CTCCSOCEKET_SYNC.layout.ConversionPattern=%d %p [%c] - %m%n

可以实现同一个类中,定义多个不同的自定义日志文件

public class MsgWriter {

private static Logger CTCCSOCKET_REPORT = Logger.getLogger("CTCCSOCKET_REPORT");
private static Logger CTCCSOCKET_SYNC = Logger.getLogger("CTCCSOCKET_SYNC");

public static void getReportMsg(){
    CTCCSOCKET_REPORT.info("CTCCSOCKET_REPORT");
}

public static void getSyncMsg(){
    CTCCSOCKET_SYNC.info("CTCCSOCKET_SYNC");
}

public static void main(String[] args) {
    MsgWriter.getReportMsg();
    MsgWriter.getSyncMsg();
}
}

问题2:对于log4j.properties文件的放置

自动加载配置文件:

在log4j启动的时候(一般是静态Logger对象初始化的时候),这时候会去到资源文件夹目录下(一般是Resource)找log4j.properties文件。如果log4j.properties文件已经放置在资源文件夹下面,就不需要在代码中自动去考虑实现了。但是一般项目开发中都会把属性文件放置在conf的文件夹下,这时候需要进行设置。把conf设置为资源文件,在编译的时候会发现conf文件夹下的所有文件都会出现在编译bin中。设置步骤如下图所示:

这里写图片描述

如果需要在代码中进行加载实现。
(1) propertyConfigurator.configure(“log4j.properties”) 默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。
log4j.properties和src放置在同级的目录下,都在根目录。如图所示:

这里写图片描述

(2) 一般一个Java项目会有很多的配置文件,建议把所有的配置文件放到一个文件夹下。例如,放到config文件夹。那么在读取这些配置文件的时候要加上子目录名称。
如图在项目目录下创建config文件夹(注意:不是在src文件下),此时config和src是同级目录
这时,读取路径改为:

PropertyConfigurator.configure(“config/log4j.properties”);
路径设置如下图所示:
这里写图片描述

(3)如果不用人为写加载属性文件的代码,只接默认读取,可以把属性文件直接放置在src目录下。

对于项目打成jar包的时候,属性文件是不会和代码放在同一个jar中,对于以上两种情况属性文件都可以放置和代码jar同级的目录下。

附加说明: 在常用的工程项目中,比方说Maven项目,生成的工程中都会存在resources文件夹,这个文件夹放置属性文件或者配置文件都是不需要在代码层去实现加载的,可以自动加载的。如果工程中没有这个文件夹存在,可以手动设置某个文件夹为资源文件夹。具体操作如上图所示,右键-build path。

参考博客:
1、http://blog.csdn.net/lifuxiangcaohui/article/details/11042375
2、http://blog.csdn.net/janestone/article/details/1862678

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值