《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
▐ 只使用java.util.logging.Logger
最简单的场景,正式系统一般不会这么用,自己写点小demo、测试用例啥的是可以这么用。不要任何第三方依赖,jdk原生支持。
▐ 只使用Apache Commons Logging
需要引入commons-logging包,示例如下:
commons-logging commons-logging 1.2
▐ Apache Commons Logging和log4j结合使用
需要引入commons-logging包和log4j包,示例如下:
commons-logging commons-logging 1.2 log4j log4j 1.2.17
该模式下可以使用的打点api:
-
org.apache.commons.logging.Log,commons-logging里的api;
-
org.apache.log4j.Logger,log4j里的api;
无论使用哪种api打点,最终日志都会通过log4j进行实际的日志记录。推荐用commons-logging里的api,如果直接用log4j里的api,就跟单用log4j没区别,就没有再引入commons-logging包的必要了。
既然最终是通过log4j实现日志记录,那么日志输出的level、target等也就是通过log4j的配置文件进行控制了。下面是一个log4j配置文件《log4j.properties》的简单示例:
#log4j.rootLogger = error,consolelog4j.logger.com.suian.logtest = trace,console
#输出源console输出到控制台log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c - [log4j]%m%n
既然是推荐使用commons-logging里的api打点,为了能找到log4j的日志实现,必须通过《commons-logging.properties》配置文件显式的确定关联,示例如下:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
代码中使用JCL api进行日志打点,底层使用log4j进行日志输出。日志输出控制依托于log4j的配置文件,另外需要在commons-logging.properties配置文件中显式指定与log4j的绑定关系。
▐ 单独使用log4j
这个是早几年最最流行的用法了,现在因为log4j本身的问题以及新的日志框架的涌现,已经逐步退出历史舞台了。具体怎么用自己去百度吧。
▐ SLF4J结合Logback
当下最流行的用法,SLF4J为使用场景最广泛的日志门面,加上Logback的天然实现,简单、统一、快速。
需要引入第三方依赖:
org.slf4j slf4j-api s l f 4 j . v e r s i o n < / v e r s i o n > < / d e p e n d e n c y > < d e p e n d e n c y > < g r o u p I d > c h . q o s . l o g b a c k < / g r o u p I d > < a r t i f a c t I d > l o g b a c k − c o r e < / a r t i f a c t I d > < v e r s i o n > {slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version> slf4j.version</version></depe