mybatis日志体系

news2024/11/23 12:49:16

title: “java日志体系”
createTime: 2021-12-08T12:19:57+08:00
updateTime: 2021-12-08T12:19:57+08:00
draft: false
author: “ggball”
tags: [“mybatis”]
categories: [“java”]
description: “java日志体系”

java日志体系

常用日志框架

  • Log4j:Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。
  • Log4j 2:Apache Log4j 2是Apache开发的一款Log4j的升级产品。
  • Commons Logging:Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。Apache推出了JCL(Jakarta Commons Logging),它只是定义了一套日志接口(其内部也提供一个Simple Log的简单实现),JCL也是一套接口规范,支持运行时动态加载日志组件的实现。也就是说,在应用程序代码中,只需调用Commons Logging的接口,底层实现可以是Log4j,也可以是JUL
  • SLF4J:全称为Simple Logging Facade for Java,类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。
  • Logback:是一套日志组件的实现,属于SLF4J阵营。
  • JUL:全称是Java Util Logging,是JDK1.4以后提供的日志实现。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mybatis日志体系

日志接口

定义了打印日志的级别

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

日志实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置日志框架的三种方式

1. 手动指定日志框架

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.先确定日志的Constructor对象

2.再利用Constructor对象和类名创建日志对象

3.打印日志的功能交给其他对象

2. 自动配置日志框架

如果不指定日志框架,mybatis也会尝试去找日志的实现

image-20211122223519531

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LogFactory中有静态代码块,会率先执行里面的代码,顺序执行(MyBatis查找日志框架的顺序为SLF4J→JCL→Log4j2→Log4j→JUL→No Logging),注意这里的run不是线程的run的概念,单纯只是匿名函数,传入Runnable对象,会执行它的run方法而已

比如会先执行第一个useSlf4jLogging 方法,如果找不到Slf4j对应的jar包,会抛出异常,但是不做任何处理,则继续执行下一个useCommonsLogging方法,如果找到了对应的jar包,会创建

Constructor对象在LogFactory对象里,然后继续执行tryImplementation、useLog4JLogging方法,每次都会判断Constructor对象为空,如果不为空则不会执行Runnable对象的run方法,从而实现自动确定日志框架。

3. 配置文件指定日志框架

image-20211122223624876

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20211122223641660

项目启动时,会去读取mybatis配置文件,将logImpl的值set到configuration对象,如果有配置日志实现,configuration对象会在调用setLogImpl,来创建指定日志的Constructor对象

总结

三种配置日志框架的方法,了解怎么把日志实现交给mybatis,mybatis如何设置日志框架的, 日志框架设计的很巧妙,接口和实现完全分开来,用户可以随意搭配实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1036426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|搭建您的私人影院网站

前言 本文为华为云云耀云服务器L实例测评文章,测评内容是云耀云服务器L实例搭建在线视频网站,大家可以将这个网站作为私人影院或是分享给朋友,但是尽量不要更广的传播,因为这涉及到版权问题 系统配置:华为云 2核2G 3M…

PostgreSQL 16 发布,更可靠更稳健

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

【LeetCode-简单题】513. 找树左下角的值

文章目录 题目方法一:DFS递归 前序遍历方法二:BFS层序双队列 题目 方法一:DFS递归 前序遍历 递归三部曲 确定递归函数参数和返回值确定递归结束条件编写常规递归体 本题只会在叶子结点才会去统计结果 也就是 root.leftnull&&root.r…

Flink DataStream API

DataStream API是Flink的核心层API。一个Flink程序,其实就是对DataStream的各种转换。具体来说,代码基本上都由以下几部分构成: package com.atguigu.env;import org.apache.flink.api.common.JobExecutionResult; import org.apache.flink.a…

AIGC百模大战

AIGC Artificial Intelligence Generated Content, 或者Generative Artificial Intelligence,它能够生成新的数据、图像、语音、视频、音乐等内容,从而扩展人工智能系统的应用范围。 生成式人工智能有可能给全球经济带来彻底的变化。根据高盛…

在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist手写数字识别,并使用多进程加速

这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, tra…

spring-cloud-stream版本升级,告别旧注解@EnableBinding,拥抱函数式编程

spring-cloud-stream中,EnableBinding从3.1开始就被弃用,取而代之的是函数式编程模型 同期被废弃的注解还有下面这些注解 Input Output EnableBinding StreamListener 官方例子:GitHub - spring-cloud/spring-cloud-stream-samples: Sample…

电视访问群晖共享文件失败的设置方式,降低协议版本

控制面板-文件服务-SMB-高级设置,常规及其他里面配置即可。

微信公众号小说系统源码 漫画系统源码 可对接微信公众号 APP打包 对接个人微信收款

源码描述:修复版掌上阅读小说源码_公众号漫画源码可以打包漫画app ■产品介绍 掌上阅读小说源码支持公众号、代理分站支付功能完善强大的小说源码,公众号乙帅读者, 可以对接微信公众号、APP打包。支持对接个人微信收款。 ■产品优势 1新增…

免费好用的Mac电脑磁盘清理工具CleanMyMac

许多刚从Windows系统转向Mac系统怀抱的用户,一开始难免不习惯,因为Mac系统没有像Windows一样的C盘、D盘,分盘分区明显。因此这也带来了一些问题,关于Mac的磁盘的清理问题,怎么进行清理?怎么确保清理的干净&…

3+氧化应激+分型+预后模型

今天给同学们分享一篇3氧化应激分型预后模型的生信文章“An oxidative stress-related signature for predicting the prognosis of liver cancer”,这篇文章于2023年月4日发表在Front Genet 期刊上,影响因子为3.7。 越来越多的证据表明,肿瘤…

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别:MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢? MySQL数…

【完美世界】天仙书院偷食也就算了,竟然还偷院长的孙女,美滋滋

Hello,小伙伴们,我是小郑继续为大家深度解析完美世界系列。 齐道临从天仙书院劫走石昊,为何天仙书院不仅没去找他麻烦,反而给他一块随意进入渡劫神莲池的令牌?石昊来到上界也是闹出不小的动静,先是在恶魔岛的神碑留名&…

C语言数组和指针笔试题(四)(一定要看)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️…

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口:求一个序列里最大、最小窗口是什么 2. 两个入门题 (1)子数组最大平…

#倍增 #国旗计划

文章目录 题目&#xff1a;题解代码 题目&#xff1a; 国旗计划 题解 三个技巧&#xff1a; 断环成链&#xff1a; 具体而言就是&#xff1a; if(w[i].R < w[i].L) w[i].R m; m是环的长度&#xff1b; 贪心&#xff1a; 选择一个区间i后&#xff0c;下一个区间只能从左端…

(c++)类和对象中篇

目录 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1. 类的 6 个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并…

线性绘制在NSDT 3D场布中的应用

什么是线性摆放&#xff1f; 线性摆放是指将一系列对象按照直线或者曲线进行排列&#xff0c;形成一条线或者弧线状的布局方式。在3D场布中&#xff0c;线性摆放可以应用于多个领域和场景&#xff0c;如展览设计、景观规划、商业空间布置等。 线性绘制在3D场布中的应用 展览设…

Postman全局配置变量token

Postman全局配置变量token 这里主要是介绍在 Postman 中全局配置token&#xff0c;以及方便以后查阅&#xff01;&#xff01;&#xff01; 一、简介 用户在开发或调试网络程序和网页B/S模式的程序时需要一些方法来跟踪网页请求&#xff0c;可使用一些网络的监视工具如Firebu…

多线程详解(下)

文章目录 常见锁策略乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁可重入锁 vs 不可重入锁公平锁 vs 非公平锁面试相关题 CAS什么是CASCAS 是怎么实现的CAS 有哪些应用1)实现原子类2)实现自旋锁 CAS的ABA问提什么是ABA问提ABA问提引来的BUG解决方法 相关面试…