题记部分

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

mybatis - [12] 日志工厂的更多相关文章

  1. Mybatis之日志工厂

    思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题. 对于以往的开发过程, ...

  2. mybatis学习——日志工厂

    为什么要使用日志工厂? 我们想一下,我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?答案是肯定的,如果一个 数据库相关的操作出现了问题,我们就可以根据输出的S ...

  3. Mybatis 的日志管理

    Mybatis通过日志工厂提供日志信息,Mybatis内置的日志模版是log4j,commons.log,jdk log也可以通过slf4j简单日志模版结合log4j使用日志信息输出.具体选择哪个日志 ...

  4. MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具

    mybatis – MyBatis 3 | 日志 http://www.mybatis.org/mybatis-3/zh/logging.html MyBatis 内置日志工厂基于运行时自省机制选择合 ...

  5. Mybatis内置的日志工厂提供日志功能

    Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪个日志 ...

  6. mybatis 与 日志

    如上图所示,mybatis默认支持7种日志记录的方式,也可以自己实现Log接口,然后将实现类通过LogFactory注入到日志工厂中. LogFactory是日志模块的入口,外层通过getLog获取L ...

  7. Mybatis学习--日志

    学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/logging.html Logging Mybatis内置的日志工厂提供日志功能,具 ...

  8. Mybatis学习-日志与分页

    日志 为什么需要日志 如果一个数据库操作出现了异常,需要排错,那么日志就是最好的助手 Mybatis通过使用内置的日志工厂提供日志功能,有一下几种实现方式: SLF4J Apache Commons ...

  9. MyBatis 显示日志

    <!-- 全局配置 --> <settings> <setting name="cacheEnabled" value="false&quo ...

  10. 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出

    前提: 需要nuget   Microsoft.Extensions.Logging.Log4Net.AspNetCore   2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...

随机推荐

  1. Centos使用图形化界面配置网络

    1. 查看当前ip地址 # ip addr 2. 图形化界面配置网卡 # nmtui 界面提示,左右上下配置,OK即可.

  2. git 报错 error: bad signature 0x00000000 fatal: index file corrupt

    index file在 git 里面一般指的是 .git/index 这个文件.这个文件保存的是暂存区的信息(索引信息). 报错说明这个文件已经损坏了 直接删除这个文件,然后执行如下命令 git re ...

  3. IOS 越狱

    iOS越狱 palera1n palera1n工具支持iOS 15.0 - 16.4.1版本的越狱 支持设备,最高支持到A11芯片 iPhone 8.8P.X iPad 5 .6.7,iPad Pro ...

  4. ajax请求与前后端交互的数据编码格式

    目录 一.Ajax AJAX简介 应用场景 AJAX的优点 语法实现 二.数据编码格式(Content-Type) 写在前面 form表单 几种数据编码格式介绍 三.ajax携带文件数据 四.ajax ...

  5. Qt音视频开发29-Onvif云台控制

    一.前言 云台控制也是onvif功能中最常用的,最常用的功能排第一的是拿到视频流地址,排第二的就是云台控制了,云台控制的含义就是对带云台的摄像机进行上下左右的移动,一般云台摄像机都是带有一个小电机,一 ...

  6. 编译Sophus报错: error: implicitly-declared 的参考解决方法

    一.问题描述 自己在编译Sophus时遇到如下错误: /home/wong/Datum/third_party/Sophus-1.0.0-template/Sophus-1.0.0/test/core ...

  7. OpenMMLab AI实战营 第三课笔记

    OpenMMLab AI实战营 第三课笔记 目录 OpenMMLab AI实战营 第三课笔记 进入 mmclassification 目录 导入工具包 下载数据集 数据集目录结构 下载 config ...

  8. .NET Core GC对象 分配(GC Alloc)底层原理浅谈

    对象分配策略 .NET程序的对象是由CLR控制并分配在托管堆中,如果是你,会如何设计一个内存分配策略呢? 按需分配,要多少分配多少,移动alloc_ptr指针即可,没有任何浪费.缺点是每次都要向OS申 ...

  9. 安装docker-compose v1

    1.首先要确保已经安装docker 2.下载docker-compose二进制文件,并移动到适当的目录 sudo curl -L "https://github.com/docker/com ...

  10. 我的新书《C#上位机开发实战指南》出版了

    -Begin- 大家好!我是付工. 2022年的时候,我萌生了编写一本上位机书籍的想法,希望能给更多的上位机学习者提供一些帮助,经历了2年多的时间,今年的8月份,这本书终于出版了. 初衷 十年前,我也 ...