mybatis - [12] 日志工厂

题记部分

 

001 || 日志工厂

如果一个数据库操作出现了异常,需要通过日志定位问题。

 

002 || Log4j

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

我们也可以控制每一条日志的输出格式;

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

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

step1:先导入log4j的包

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

step2:log4j.properties

### 全局配置 ###

# 设置根日志记录器的级别和输出目标
# 日志级别从低到高依次为: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
# 这里设置为 DEBUG 级别,意味着会输出 DEBUG 及以上级别的日志
# 输出目标为 console 和 file,即日志会同时输出到控制台和文件
log4j.rootLogger=DEBUG, console, file

### 控制台输出配置 ###

# 定义一个名为 console 的输出器,使用 ConsoleAppender 类,将日志输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender

# 设置控制台输出的目标,这里是 System.out,也可以设置为 System.err
log4j.appender.console.Target=System.out

# 设置控制台输出的布局,使用 PatternLayout 类,可以自定义日志的输出格式
log4j.appender.console.layout=org.apache.log4j.PatternLayout

# 定义日志输出的格式
# %d{yyyy-MM-dd HH:mm:ss}: 日期时间,格式为年-月-日 时:分:秒
# %-5p: 日志级别,左对齐,宽度为 5 个字符
# %c{1}: 日志记录器的名称,只显示最后一个部分
# %L: 日志输出所在的行号
# %m: 日志消息内容
# %n: 换行符
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

### 文件输出配置 ###

# 定义一个名为 file 的输出器,使用 RollingFileAppender 类,支持日志文件的滚动
log4j.appender.file=org.apache.log4j.RollingFileAppender

# 设置日志文件的路径和名称
log4j.appender.file.File=logs/application.log

# 设置日志文件的最大大小,达到该大小后会进行滚动
# 这里设置为 10MB,单位可以是 KB、MB、GB 等
log4j.appender.file.MaxFileSize=10MB

# 设置日志文件的最大备份数量
# 当日志文件滚动时,最多保留 10 个备份文件
log4j.appender.file.MaxBackupIndex=10

# 设置文件输出的布局,同样使用 PatternLayout 类
log4j.appender.file.layout=org.apache.log4j.PatternLayout

# 定义文件输出的日志格式,与控制台输出格式相同
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

### 特定包或类的日志级别配置 ###

# 可以为特定的包或类单独设置日志级别
# 例如,将 com.example 包下的所有类的日志级别设置为 INFO
log4j.logger.com.example=INFO

### 异步日志配置 ###

# 定义一个名为 async 的异步输出器,使用 AsyncAppender 类
log4j.appender.async=org.apache.log4j.AsyncAppender

# 将之前定义的 file 输出器添加到异步输出器中
log4j.appender.async.appenderRef=file

# 设置异步输出器的缓冲区大小,这里设置为 1024 个日志事件
log4j.appender.async.BufferSize=1024

# 可以将 rootLogger 的输出目标改为异步输出器,实现异步日志记录
# log4j.rootLogger=DEBUG, console, async

### 邮件输出配置 ###

# 定义一个名为 mail 的邮件输出器,使用 SMTPAppender 类
# log4j.appender.mail=org.apache.log4j.net.SMTPAppender

# 设置邮件的发送者地址
# log4j.appender.mail.From=your_email@example.com

# 设置邮件的接收者地址
# log4j.appender.mail.To=recipient_email@example.com

# 设置邮件的主题
# log4j.appender.mail.Subject=Application Error Log

# 设置 SMTP 服务器地址
# log4j.appender.mail.SMTPHost=smtp.example.com

# 设置 SMTP 服务器端口
# log4j.appender.mail.SMTPPort=25

# 设置邮件输出的布局
# log4j.appender.mail.layout=org.apache.log4j.PatternLayout
# log4j.appender.mail.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 设置触发邮件发送的日志级别,这里设置为 ERROR,即只有当出现 ERROR 级别的日志时才发送邮件
# log4j.appender.mail.Threshold=ERROR

# 可以将 rootLogger 的输出目标添加邮件输出器,实现错误日志邮件通知
# log4j.rootLogger=DEBUG, console, file, mail

step3:配置log4j为日志的实现

<settings>
    <setting name="logImpl" value="LOG4J"/>
</settings>

step4:使用logger

package com.harley.mapper;

import com.harley.dao.UserMapper;
import com.harley.pojo.User;
import com.harley.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

/**
 * @author harley
 * @since 2025-02-15 20:19:43
 */
public class UserDaoTest {


    static Logger logger = Logger.getLogger(UserDaoTest.class);

    // 第一步: 获得SqlSession对象
    SqlSession sqlSession;
    UserMapper userMapper;

    @Before
    public void init(){
        logger.info("初始化连接...");
        sqlSession = MybatisUtils.getSqlSession();
        userMapper = sqlSession.getMapper(UserMapper.class);

    }


    @Test
    public void test(){
        // 方法一: getMapper

        List<User> userList = userMapper.getUser();

        for (User user : userList) {
            System.out.println(user);
        }
    }

    @After
    public void close(){
        logger.info("关闭数据库连接...");
        sqlSession.close();
    }
}

Logger的日志级别:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

 

 

 

posted @   HOUHUILIN  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示