Log4j
-
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。
-
也可以控制每一条日志的输出格式;
-
通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
-
这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
日志级别
debug调试 info信息 warn警告 error错误 fatal严重
(从小到大)
- debug(调试):非常详细的代码运行记录
- info(信息):常规的信息输出【比较常用】,一般用于记录应用程序的运行状态和关键信息,如启动、关闭等
- warn(警告):程序中出现了一些不合理的情况,但是还没有达到影响运行的程度,不会导致程序立即停止。
- error(错误):程序中某个模块发生了错误,但是不影响整体的系统运行,只要妥善处理。例如捕获异常。
- fatal(严重):严重的错误不是来自于业务逻辑,可能来自于运行环境,可能会导致系统崩溃,一般用于记录程序运行过程中无法恢复的严重错误。例如:内存溢出
Log4j三大核心组件
1、Logger(日志记录器)
Logger是Log4j中负责记录日志的核心组件。他提供了各种日志记录方法,如debug()、info()、warn()、error()、fatal()等。
java
logger.debug("这是一个调试信息");
logger.info("这是一个信息");
logger.warn("这是一个警告");
logger.error("这是一个错误");
logger.fatal("这是一个致命错误");
2、Appender(日志输出器)
Appender负责将日志输出到指定的目的地。Log4j提供了多种Appender类型,如ConsoleAppender(控制台)、FileAppender(文件)、DailyRollingFileAppender(按日期滚动文件)等。
java
org.apache.log4j.ConsoleAppender //控制台
org.apache.log4j.FileAppender //⽂件
org.apache.log4j.DailyRollingFileAppender //每天产⽣⼀个⽇志⽂件
org.apache.log4j.RollingFileAppender //⽂件⼤⼩达到指定尺⼨时产⽣⼀个新⽂件
org.apache.log4j.WriterAppender //将⽇志以流格式发送到任意指定位置
org.apache.log4j.JDBCAppender //把⽇志⽤JDBC记录到数据库
3、Layout(日志格式化器)
Layout负责将日志信息格式化成特定的格式。常见格式有:
java
org.apache.log4j.HTMLLayout //HTML表格形式布局
org.apache.log4j.PatternLayout //根据模板布局
org.apache.log4j.SimpleLayout //包含⽇志信息级别和信息字符串
org.apache.log4j.TTCCLayout //包含⽇志产⽣的线程,类别,内容等信息
log4j.properties配置文件
java
# 设置输出器 [level,] appenderName1, appenderName2,....
# level为日志输出级别,默认为debug
log4j.rootLogger = debug,logger1,logger2
# 输出源配置,通常包含以下两种结构:
# 声明输出源类型
# log4j.appender.输出源名称 = 输出源类型
# 为该输出源定义配置参数
# log4j.appender.输出源名称.配置参数名 = 配置参数值
## 第一个输出源
# 使用控制台输出源类型(输出时会将信息打印到控制台上)
log4j.appender.logger1 = org.apache.log4j.ConsoleAppender
# 输出使用的目标对象
log4j.appender.logger1.Target = System.out
# 定义该输出源使用的布局 PatternLayout:格式字符串
log4j.appender.logger1.layout = org.apache.log4j.PatternLayout
# 定义布局格式 -:向左对齐
log4j.appender.logger1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%t] [%m]%n
## 第二个输出源
# 使用每天产生一个新日志文件的输出源
log4j.appender.logger2 = org.apache.log4j.DailyRollingFileAppender
# 输出文件的路径
log4j.appender.logger2.File = logs/env-log
log4j.appender.logger2.datePattern='.'yyyy-MM-dd HH-mm'.log'
# 是否追加
log4j.appender.logger2.Append = true
# 输出级别
log4j.appender.logger2.Threshold = info
# 定义该输出源使用的布局
log4j.appender.logger2.layout = org.apache.log4j.PatternLayout
# 定义布局格式
log4j.appender.logger2.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%-5p] [%t] [%m]%n
基本使用
1、引入相关依赖:Log4j
XML
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2、导入包:import org.apache.log4j.Logger;
3、创建日志对象,参数为当前类的class
static Logger log = Logger.getLogger(Log4jExample.class);
java
import org.apache.log4j.Logger;
public class Log4jExample {
static final Logger logger = Logger.getLogger(Log4jExample.class);
public static void main(String[] args) {
// 输出不同级别的日志
logger.fatal("这是一个致命错误");
logger.error("这是一个错误");
logger.warn("这是一个警告");
logger.info("这是一个信息");
logger.debug("这是一个调试信息");
logger.trace("这是一个跟踪信息");
}
}
最后:在Mybatis设置中设定STDOUT_LOGGING是标准的日志输出,也可以通过上述导包和依赖的方式,设置为Log4j
XML
<!-- 开启SQL日志输出功能 STDOUT_LOGGING标准的日志输出-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<setting name="logImpl" value="log4j"/>