日志
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。
日志级别
分为五个级别:
DEBUG(人为调试信息)、INFO(普通信息)、WARN(警告)、ERROR(错误)和FATAL(系统错误)
这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设 定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。
Log4J使用
mybatis里面有写好的日志文件便于使用,这里需要先导包
配置文件
可以使用properties或者xml进行配置,使用一个叫 log4j.properties 的配置文件, 会设定 log4j 的设置信息, 例如日志级别, 日志输出方式, 日志格式等等.
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
#单独设置SQL语句的输出级别为DEBUG级别
#方法级别设置
#log4j.logger.com.xxxx.mappers.DeptMapper.queryAll=DEBUG
#类级别
#log4j.logger.com.xxxx.mappers.DeptMapper=DEBUG
#包级别
log4j.logger.com.xxxx.mappers=DEBUG
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= %m %c %l %d{yyyy/MM/dd HH:mm:ss}%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=E:/a/test.log
log4j.appender.LOGFILE.Append=TRUE
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n
package com.xxxx.test;
import org.apache.log4j.Logger;
/*
log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
第一个是打印的信息级别,说明打印的信息级别不低于debug,第二个是打印到控制台,第三个是打印到日志文件中
---------------------------------------------------------------------------
#单独设置SQL语句的输出级别为DEBUG级别
#方法级别设置
#log4j.logger.com.xxxx.mappers.DeptMapper.queryAll=DEBUG
#类级别
#log4j.logger.com.xxxx.mappers.DeptMapper=DEBUG
#包级别
log4j.logger.com.xxxx.mappers=DEBUG
---------------------------------------------------------------------------
log4j.appender.CONSOLE.layout.ConversionPattern= %m %c %l %d{yyyy/MM/dd HH:mm:ss}%n
%m 日志信息
%c 类
%l 日志对应的行数
%d 日期 可以设置格式 %d{yyyy/MM/dd HH:mm:ss}
%n 换行
---------------------------------------------------------------------------
log4j.appender.LOGFILE.File=E:/a/test.log
test.log的路径不能有中文,不然可能会在中文文件夹的同级下产生乱码名字目录,test.log放在乱码名字目录
test.log的路径中,如果文件夹a不存在,那么会自动创建一个空文件夹,然后test.log会放在文件夹a里面
log4j.appender.LOGFILE.Append=TRUE 打印到文件中时,在文件内容后面进行追加,如果是false,那么会覆盖文件内容
---------------------------------------------------------------------------
log4j.appender.LOGFILE.Append=TRUE
TRUE表示追加在文件内容的后面,如果是false,就覆盖文件内容
*/
public class Test {
public static void main(String[] args) {
Logger logger = Logger.getLogger(Test.class);
//五个日志级别
logger.fatal("致命的,系统错误...");
logger.error("错误...");
logger.warn("警告...");
logger.info("信息打印...");
logger.debug("debug...");
}
}
//运行结果:
致命的,系统错误... com.xxxx.test.Test com.xxxx.test.Test.main(Test.java:26) 2020/11/08 21:00:24
错误... com.xxxx.test.Test com.xxxx.test.Test.main(Test.java:27) 2020/11/08 21:00:24
警告... com.xxxx.test.Test com.xxxx.test.Test.main(Test.java:28) 2020/11/08 21:00:24
信息打印... com.xxxx.test.Test com.xxxx.test.Test.main(Test.java:29) 2020/11/08 21:00:24
debug... com.xxxx.test.Test com.xxxx.test.Test.main(Test.java:30) 2020/11/08 21:00:24
Mybatis对Log4J的支持
通过settings标签开启 log4j 的支持
settings用于设置 MyBatis 在运行时的行为方式, 例如:缓存, 延迟加载,日志等
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- configuration 核心配置文件的根元素 -->
<configuration>
<!-- properties 加载外部的配置文件 -->
<properties resource="db.properties"/>
<!-- settings 标签 -->
<settings>
<!-- 设置mybatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- typeAliases 定义别名 -->
<typeAliases>
<package name="com.xxxx.pojo"/>
</typeAliases>
<!--
用于指定使用哪一个开发环境
-->
<environments default="ev">
<environment id="ev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--接口绑定方案: 通过mapper配置扫描的接口-->
<mappers>
<!--配置整个包mappers所有的接口-->
<package name="com.xxxx.mappers"/>
</mappers>
</configuration>