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
mybatis - [12] 日志工厂的更多相关文章
- Mybatis之日志工厂
思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题. 对于以往的开发过程, ...
- mybatis学习——日志工厂
为什么要使用日志工厂? 我们想一下,我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?答案是肯定的,如果一个 数据库相关的操作出现了问题,我们就可以根据输出的S ...
- Mybatis 的日志管理
Mybatis通过日志工厂提供日志信息,Mybatis内置的日志模版是log4j,commons.log,jdk log也可以通过slf4j简单日志模版结合log4j使用日志信息输出.具体选择哪个日志 ...
- MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具
mybatis – MyBatis 3 | 日志 http://www.mybatis.org/mybatis-3/zh/logging.html MyBatis 内置日志工厂基于运行时自省机制选择合 ...
- Mybatis内置的日志工厂提供日志功能
Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪个日志 ...
- mybatis 与 日志
如上图所示,mybatis默认支持7种日志记录的方式,也可以自己实现Log接口,然后将实现类通过LogFactory注入到日志工厂中. LogFactory是日志模块的入口,外层通过getLog获取L ...
- Mybatis学习--日志
学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/logging.html Logging Mybatis内置的日志工厂提供日志功能,具 ...
- Mybatis学习-日志与分页
日志 为什么需要日志 如果一个数据库操作出现了异常,需要排错,那么日志就是最好的助手 Mybatis通过使用内置的日志工厂提供日志功能,有一下几种实现方式: SLF4J Apache Commons ...
- MyBatis 显示日志
<!-- 全局配置 --> <settings> <setting name="cacheEnabled" value="false&quo ...
- 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出
前提: 需要nuget Microsoft.Extensions.Logging.Log4Net.AspNetCore 2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...
随机推荐
- 微信开发者工具请求接口 Provisional headers are shown
前情 最近全权负责公司小程序项目的开发,使用的uniapp技术栈. 坑 在和服务端联调的时候发现,接口pending很久,而且时不时的报Provisional headers are shown,而且 ...
- Git+Gitee使用分享
Git+Gitee快速入门 创建仓库 初始化本地仓库 验证本地git是否安装好 打开cmd窗口,输入git 这样就OK. Git 全局设置:(只需要设置一次) 这台电脑如果是第一次使用 ...
- go语言签发和验证license
https://www.cnblogs.com/guangdelw/p/18328342 生成非对称密钥 package main import ( "crypto/rand" & ...
- Kerberos认证代码分析Can't get Kerberos realm
1. Can't get Kerberos realm 原因分析: 原始代码为: 1 2 org.apache.hadoop.security.UserGroupInformation.setConf ...
- Qt/C++编写地图应用/离线地图下载/路径规划/轨迹回放/海量点/坐标转换
一.前言说明 这个地图组件写了很多年了,最初设计的比较粗糙,最开始只是为了满足项目需要,并没有考虑太多拓展性,比如最初都是按照百度地图写死在代码中,经过这几年大量的现场实际应用,以及大量的用户提出的改 ...
- Qt/C++音视频开发49-多级连保存和推流设计(同时保存到多个文件/推流到多个平台)
一.前言 近期遇到个用户需要多级联的保存和推流,在ffmpegsave多线程保存类中实现这个功能,越简单越好,就是在推流的同时,能够开启自动转储功能,一边推流的同时一边录像保存到本地视频文件.最初设想 ...
- Qt音视频开发32-qmedia内核回调拿图片数据
一.前言 使用qmediaplayer来打开视频并播放,默认首选会采用QVideoWidget控件来展示,优点是不用自己来绘制,一切交给了QVideoWidget控件,这样可以做到极低的CPU占用,缺 ...
- Qt开发经验小技巧241-245
QString类是我个人认为Qt所有类中的精华,封装的无可挑剔.内置了各种进制数据的转换,比如将数据转成10进制.16进制显示,或者将10进制.16进制数据转成字符串显示.这里很容易忽略的一点就是,很 ...
- 即时通讯技术文集(第43期):直播技术合集(Part3) [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 43 期. [-1-] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践 ...
- JMeter JDBC 请求实战宝典
<JMeter JDBC 请求实战宝典> 宝子们,今天咱就来唠唠 JMeter 里超厉害的 JDBC 请求,这玩意儿就像是数据库世界的神奇魔杖,能帮咱把数据库里的各种秘密(数据)都挖出来, ...