点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~
本文介绍 JCL(java common logging) 和 SLF4J 分别与 Log4j 结合使用的示例。
1
JCL + Log4j 使用示例
1、JCL(java common logging) + Log4j 介绍
使用 commons-logging 的 Log 接口,并由 commons-logging 在运行时决定使用哪种日志架构(如 Log4j)。现在,Apache 通用日志工具 commons-logging 和 Log4j 已经成为 Java 日志的标准工具,这个组合是比较常用的一个日志框架组合。
2、JCL(java common logging) + Log4j 使用步骤说明
(1)选择jar包
引入必要的包:commons-logging-1.2.jar 、log4j1.2.17.jar。
(2)pom.xml 配置
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version>
</dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>
(3)common-logging.properties 配置文件
只需要一行即可,放在 classpath 下,如果是 Maven 中就在 src/resources 下,不过如果没有 common-logging.properties 文件,但是 src 下有 log4j.properties 配置也可以正常的输出 Log4j 设置的日志。
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
(4)log4j.properties 配置文件
#配置根Logger
#改代码表示输输出info级别以上的日志,文件分别输出,一个是file,一个是errorlog4j.rootLogger=info,file,error
#配置file日志信息输出目的地Appender
#定义名为file的输出端是每天产生一个日志文件log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #指定日志信息的最低输出级别位INFO,默认为DEBUG。log4j.appender.file.Threshold=INFO #指定当前消息输出到jpm/log4j/log.log文件中log4j.appender.file.File=/jpm/log4j/log.log #指定按天来滚动日志文件log4j.appender.file.DatePattern=yyyy-MM-dd #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式log4j.appender.file.layout=org.apache.log4j.PatternLayout #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n #指定输出信息的编码log4j.appender.file.encoding=UTF-8
#配置error日志信息输出目的地Appender
#定义名为error的输出端是每天产生一个日志文件log4j.appender.error=org.apache.log4j.DailyRollingFileAppender #指定日志信息的最低输出级别位ERROR,默认为DEBUG。log4j.appender.error.Threshold=ERROR #指定当前消息输出到jpm/log4j/error.log文件中log4j.appender.error.File=/jpm/log4j/error.log #指定按月来滚动日志文件log4j.appender.error.DatePattern=yyyy-MM #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式log4j.appender.error.layout=org.apache.log4j.PatternLayout #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息log4j.appender.error.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n #指定输出信息的编码log4j.appender.error.encoding=UTF-8
#使某个功能的日志单独输出到指定的日志文件log4j.logger.saveUserLog=INFO,saveUserLog #该配置就是让job的日志只输出到自己指定的日志文件中,表示Logger不会在父Logger的appender里输出,默认为true。log4j.additivity.saveUserLog=falselog4j.appender.saveUserLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.saveUserLog.File=/jpm/log4j/saveUserLog.loglog4j.appender.saveUserLog.DatePattern=yyyy-MM-ddlog4j.appender.saveUserLog.Append=truelog4j.appender.saveUserLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.saveUserLog.layout.ConversionPattern=%m%nlog4j.appender.error.encoding=UTF-8
(5)输出日志的代码示例
package jpm.jcllog4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class TestJclAndLog4j {
public static void main(String[] args) { final Log LOGGER = LogFactory.getLog(TestJclAndLog4j.class);LOGGER.debug("TestJclAndLog4j debug log.");LOGGER.info("TestJclAndLog4j info log.");LOGGER.error("TestJclAndLog4j error log.");}
}
(6)打印日志结果
2
SLF4J + Log4j 使用示例
1、SLF4J + Log4j 介绍
SLF4j+Log4j 与 JCL+Log4J 的使用方式差不多,主要差异就在 SLF4J 用 用绑定包(slf4j-Log4j12.jar)来告知用哪种日志实现,而 JCL 是通过配置文件来获得该选择哪个日志实现。
2、SLF4J + Log4j使用步骤说明
(1)选择jar包
引入必要的包:slf4j-api.jar 、slf4j-log4j12.jar。
(2)pom.xml 配置
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version>
</dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version>
</dependency>
(3)log4j.properties 配置文件
#配置根Logger
#改代码表示输输出info级别以上的日志,文件分别输出,一个是file,一个是errorlog4j.rootLogger=info,file,error
#配置file日志信息输出目的地Appender
#定义名为file的输出端是每天产生一个日志文件log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #指定日志信息的最低输出级别位INFO,默认为DEBUG。log4j.appender.file.Threshold=INFO #指定当前消息输出到jpm/log4j/log.log文件中log4j.appender.file.File=/jpm/log4j/log.log #指定按天来滚动日志文件log4j.appender.file.DatePattern=yyyy-MM-dd #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式log4j.appender.file.layout=org.apache.log4j.PatternLayout #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n #指定输出信息的编码log4j.appender.file.encoding=UTF-8
#配置error日志信息输出目的地Appender
#定义名为error的输出端是每天产生一个日志文件log4j.appender.error=org.apache.log4j.DailyRollingFileAppender #指定日志信息的最低输出级别位ERROR,默认为DEBUG。log4j.appender.error.Threshold=ERROR #指定当前消息输出到jpm/log4j/error.log文件中log4j.appender.error.File=/jpm/log4j/error.log #指定按月来滚动日志文件log4j.appender.error.DatePattern=yyyy-MM #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式log4j.appender.error.layout=org.apache.log4j.PatternLayout #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息log4j.appender.error.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n #指定输出信息的编码log4j.appender.error.encoding=UTF-8
#使某个功能的日志单独输出到指定的日志文件log4j.logger.saveUserLog=INFO,saveUserLog #该配置就是让job的日志只输出到自己指定的日志文件中,表示Logger不会在父Logger的appender里输出,默认为true。log4j.additivity.saveUserLog=falselog4j.appender.saveUserLog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.saveUserLog.File=/jpm/log4j/saveUserLog.loglog4j.appender.saveUserLog.DatePattern=yyyy-MM-ddlog4j.appender.saveUserLog.Append=truelog4j.appender.saveUserLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.saveUserLog.layout.ConversionPattern=%m%nlog4j.appender.error.encoding=UTF-8
(4)输出日志的代码示例
package jpm.slf4jlog4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSlf4jAndLog4j { public static void main(String[] args) { final Logger LOGGER = LoggerFactory.getLogger(TestSlf4jAndLog4j.class);LOGGER.debug("TestSlf4jAndLog4j debug log:{}", "debug");LOGGER.info("TestSlf4jAndLog4j info log:{}", "info");LOGGER.error("TestSlf4jAndLog4j error log:{}", "error");}
}
(5)打印日志结果
Java 日志处理介绍结束。