? 在项目开发过程中,我们输出日志,都是使用System.out 输出 。 如果以后项目上线,我们就需要禁止输出这些测试的日志,那么就需要一行一行的查看我们代码,把输出语句删除; 或者说我们需要输出一些有必要的提示的日志,那么就比较难控制。 这些日志只会输出到控制台, 不会保存成文件. 所以我们采用专门的日志系统(jar包)来处理.
2.介绍SLF4J 和 log4j的关系
-
SLF4J : Simple Logging Facade for Java, java的日志系统门面, 其实就是定义了一种接口、有点像JDBC似的,可以理解为规范。
-
log4j 是属于实现 , 也就是具体输出日志的时候,用的是log4j。
规范的出现是因为在一个程序中多个框架用到了不同的日志系统,日志杂乱。规范提供统一解决方案。规范和实现的整合,需要中间整合桥梁。
3.日志的使用步骤
jar下载地址:https://www.apache.org/dyn/closer.lua/logging/log4j/
https://www.slf4j.org/download.html/
-
拷贝jar包到项目中(log4j-1.2.17.jar 、 slf4j-api-1.7.25.jar 、slf4j-log4j12-1.7.25.jar)
-
在src目录下编写log4j.properties配置文件
#设置日志记录到控制台的方式
log4j.appender.std=org.apache.log4j.ConsoleAppender
#out以黑色字体输出,err以红色字体输出
log4j.appender.std.Target=System.out
log4j.appender.std.layout=org.apache.log4j.PatternLayout
log4j.appender.std.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
?
#设置日志记录到文件的方式
log4j.appender.file=org.apache.log4j.FileAppender
#日志文件路径文件名
log4j.appender.file.File=mylog.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#日志输出的格式
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#日志输出的级别,以及配置记录方案
log4j.rootLogger=info,std,file
级别:error > warn > info>debug>trace
如果设置了某个级别, 只会打印比这个级别高的或者等于这个级别的日志
1 import org.junit.Test; 2 import org.slf4j.Logger; 3 import org.slf4j.LoggerFactory; 4 5 /** 6 * @Author: KONG 7 * @Description: 8 * @Date: Created in 4:57 PM 21/01/2018 9 * @Modified By: 10 */ 11 public class LogTest { 12 13 private Logger logger = LoggerFactory.getLogger(LogTest.class); 14 @Test 15 public void fun01(){ 16 logger.error("error日志级别...."); 17 logger.warn("warn日志级别...."); 18 logger.info("info日志级别...."); 19 logger.debug("debug日志级别...."); 20 logger.trace("trace日志级别...."); 21 } 22 }
输出结果
2018-01-21 16:58:45 ERROR LogTest:16 - error日志级别....
2018-01-21 16:58:45 WARN LogTest:17 - warn日志级别....
2018-01-21 16:58:45 INFO LogTest:18 - info日志级别....