Java中Log4j的配置与使用详细解析

Log4j

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。

  • 也可以控制每一条日志的输出格式

  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

  • 这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

日志级别

debug调试 info信息 warn警告 error错误 fatal严重(从小到大)

  1. debug(调试):非常详细的代码运行记录
  2. info(信息):常规的信息输出【比较常用】,一般用于记录应用程序的运行状态和关键信息,如启动、关闭等
  3. warn(警告):程序中出现了一些不合理的情况,但是还没有达到影响运行的程度,不会导致程序立即停止。
  4. error(错误):程序中某个模块发生了错误,但是不影响整体的系统运行,只要妥善处理。例如捕获异常。
  5. 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"/>
相关推荐
wainyz几秒前
Java NIO操作
java·开发语言·nio
工业3D_大熊6 分钟前
【虚拟仿真】CEETRON SDK在船舶流体与结构仿真中的应用解读
java·python·科技·信息可视化·c#·制造·虚拟现实
喵叔哟9 分钟前
重构代码之用委托替代继承
开发语言·重构
lzb_kkk14 分钟前
【JavaEE】JUC的常见类
java·开发语言·java-ee
SEEONTIME14 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
起名字真南33 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
爬山算法38 分钟前
Maven(28)如何使用Maven进行依赖解析?
java·maven
tyler_download44 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
小小小~1 小时前
qt5将程序打包并使用
开发语言·qt
hlsd#1 小时前
go mod 依赖管理
开发语言·后端·golang