1 日志记录框架
在开发过程中, 测试时需要指导方法调用是否成功, 在项目上线后, 需要知道程序的运情况, 都需要通过记录日志的形式去查看. 不仅要能够打印在控制台, 还需要记录到指定的日志文件中. 日志文件的后缀一般为.log
2 常见的日志记录框架
- log4j: Aapache开源的日志记录框架, 可以使用.properties作为配置文件
- log4j2: 对.properties文件支持不太好, 推荐使用.xml作为配置文件
- slf4j: 是一种日志记录接口, 相当于规范, 使用时需要找指定的实现, 例如log4j
- logback: 当前比较流行的日志记录框架.
- commons-logging: Aapche提供的工具, 通常被别的框架依赖
3 Log4J的日志记录级别
以下日志级别由高到低, 可以通过调整日志级别控制哪些日志可以被打印.
- FATAL: 致命的错误, 不是代码引起的, 而是系统故障;
- ERROR: 错误, 代码运行发生的错误;
- WARN: 警告, 不会影响程序运行, 但是可能存在风险;
- INFO: 普通消息;
- DEBUG: 调试信息;
- TRACE: 跟踪信息, 打印出非常详细的运行过程.
4 Log4J的使用
- 导包
添加依赖
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
- 提供配置文件
要求名称必须叫log4j.properties, 位置必须放在src目录下.
# 设置log4j的根(整体)日志级别, 同时指定日志输出的位置: CONSOLE表示控制台, LOGFILE表示日志文件
log4j.rootCategory=INFO, CONSOLE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
# 设置局部位置的日志级别
#log4j.logger.org.apache.axis.enterprise=FATAL
# 设置控制台日志输出的格式
# 常用符号
# %m: message, 日志消息
# %n: 回车换行
# %d: 日期时间, 可以自定义日期时间格式, %d{yyyy-MM-dd HH:mm:ss}
# %p: 日志级别
# %l: 日志发生的具体位置
# %c: 定位, 包名.类名
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- [%5p] %m%n
# 设置日志文件中日志输出的格式
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:/test.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
- 编写代码
package com.wuyw.test;
import org.apache.log4j.Logger;
public class TestLog {
// 创建日志对象
private static Logger logger = Logger.getLogger(TestLog.class);
public static void main(String[] args) {
logger.fatal("致命错误");
logger.error("错误级别");
logger.warn("警告级别");
logger.info("消息级别");
logger.debug("调试级别");
logger.trace("跟踪级别");
}
}
5 MyBatis对log4j的支持
MyBatis支持多种日志记录方式, 如下所示:
- 可以在核心配置文件中通过<settings>标签开启log4j支持, 不配置也行可以自动查找.
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="logImpl" value="LOG4J" /> </settings>
- 调整局部日志级别, 打印自己需要的日志
# 设置log4j的根(整体)日志级别 log4j.rootCategory=ERROR, CONSOLE# 设置局部位置的日志级别 log4j.logger.a.b.c=TRACE
- 结果