以下信息来自:网络和自己的理解
大家做项目都知道,日志对开发人员的重要性,但是日志的打印和记录是很耗资源的。以前开发一个项目,做压力测试的时候,发现性能总是提不上去,偶然因素发现,开发人员在写代码的时候,为了方便调试,有很多debug和info信息,项目上线后,没有做日志级别处理,然后将生产环境的日志级别调整到ERROR,性能一下就上去了。所有开发开发环境和生产环境需要不同的日志级别,而且需要输出到不同路径下。log4j可以满足这些需求;有时候错误不是在业务方面,是出在了数据库sql级别的,这时候对数据库sql的记录信息就相当重要:p6spy日志框架就是专注于数据库级别的。
1、log4j的配置:
log4j的配置有xml和property两种配置,主要说property配置:
创建一个 log4j.properties文件,配置是基于:key=value形式的。
Log4J配置文件的基本格式如下:
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …===》第一个value值是配置基本日志级别,后面可以有多个appenderName,多个appenderName的目的是想对不同appenderName做不同的配置:比如日志记录的级别,日志记录的方式,输出格式,布局等等
#配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …===》第一个value值是配置基本日志级别,后面可以有多个appenderName,多个appenderName的目的是想对不同appenderName做不同的配置:比如日志记录的级别,日志记录的方式,输出格式,布局等等
#配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN