日志配置(springboot、mybatis、Lombok)

Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util LoggingLog4J, Log4J2Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容

 

SLF4J——Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象。

Java日志框架众多——常用的有java.util.logging, log4j, logback,commons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。

而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各类日志框架的binding。

 

springboot默认日志:Logback

Logback

  • 时间日期:精确到毫秒

  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE

  • 进程ID

  • 分隔符:--- 标识实际日志的开始

  • 线程名:方括号括起来(可能会截断控制台输出)

  • Logger名:通常使用源代码的类名

  • 日志内容

springboot中的jar依赖

spring-boot-starter中spring-boot-starter-logging

Thymeleaf依赖spring-boot-starter

控制台输出

日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。

Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台,在application.properties中配置debug=true,可开启debug级别日志

文件输出

如果要输出文件,需在application.properties中设置logging.file或logging.path属性。

注:二者不能同时使用,如若同时使用,则只有logging.file生效

默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO,

要设置日志级别用logging.level,格式为:'logging.level.* = LEVEL'

springboot下自定义日志配置

 不同的日志系统,可以按如下规则组织配置文件名:

Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging):logging.properties

 

整合mybatis,如果需要将sql语句输出则需要设置

 logging.level.com.tylnn.dao.*=DEBUG

总结一下,之前设置了好久总是不能成功的将sql语句输出到日志中,主要原因:

springboot的application属性文件中,设置了mybatis的输出类为

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl (这是指控制台输出)

然后mybatis中的mybatis-config.xml文件中却配置成了LOG4J

<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="LOG4J" /> 
</settings>

补充说下,MyBatis 所用日志的具体实现,未指定时将自动查找。

SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING

springboot下lombok日志插件的集成

一般在代码中要引用log对象,需要先手动将这个对象创建出来,比如:private static final Logger log = LoggerFactory.getLogger(XXX.class);

这样的话,这里的XXX就需要根据类名的不通,每个进入类中逐一更改,甚是麻烦,为此就发现了lombok这个插件。

要使用这个插件,以eclipse为例:分2部分,1个是装插件,2个是代码中引用jar包

一.装插件

1.需要下载lombok的jar包,下载地址: https://projectlombok.org/download.html

2.双击lombok.jar,一直选到eclipse.ini文件,点击"install/update"

3.重启eclipse

二.代码中引用jar包

1.pom文件引用

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

2.代码中引用

controller类上加入注解@Slf4j

@RestController
@Slf4j
public class LombokTestController{}

方法中直接使用

log.info("测试lombok日志");

 

转载于:https://www.cnblogs.com/bestruggle/p/10050178.html

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

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

相关文章

先知

他这样说爱情&#xff1a;Love gives naught but itself and takes naught but from itself.Love possesses not nor would it be possessed.For love is sufficient unto love.转载于:https://www.cnblogs.com/belial/archive/2007/09/23/903433.html

TCP与UDP的选择--结合QQ来说明

TCP与UDP的选择如果比较UDP包和TCP包的结构&#xff0c;很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同&#xff0c;UDP的源端口数和目的端口数也都支持一台 主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度&#xff0c;校验码域使其可以…

Xampp修改数据库默认用户root的密码

Xampp数据库默认用户root&#xff0c;密码为空&#xff0c;修改密码的位置&#xff1a;xampp/passwords.txt转载于:https://www.cnblogs.com/testlife/archive/2012/02/08/2342438.html

1.6元的蓝牙芯片,你能想得到?

前不久喵了个咪在群里发了一个1.6元的SOP8蓝牙芯片的信息&#xff0c;引起了大家的热烈讨论&#xff0c;我当然也按捺不住鸡冻的心情&#xff0c;立马下单买了几片。淘宝连接&#xff1a;KT6368Ahttps://item.taobao.com/item.htm?spma1z09.2.0.0.74a52e8dTpp1my&id630430…

pyplot交互地画多个plot

下面的代码&#xff0c;可以无阻碍地show 5个figure&#xff0c;相当于开启了ipython的interactive 模式 具体参见stackoverflow: in matplotlib, is there a way to pop up a figure asynchronously? 1 #!/usr/bin/python2 import pylab as plb3 import matplotlib.pyplot as…

又是一年中秋节,好想举杯邀明月

世事一场大梦&#xff0c;人生几度新凉。夜来风叶已鸣廊&#xff0c;看取眉间鬓上。 酒贱常愁客少&#xff0c;月明多被云妨。中秋谁与共孤光&#xff0c;把盏凄然北望。 简策写虚名&#xff0c; 蝼蚁侵枯骨。千古光阴一霎时&#xff0c;且进杯中物。 二十四年过去&#xff…

UDT内部代码分析

一. 报文发送 1.CSndQueue::worker中调用CChannel::sendto发送数据报文。 2.CSndQueue::sendto中调用CChannel::sendto发送其他报文, 种类较多主要有: 1)CUDT::connect中调用CSndQueue::sendto发送建立连接请求。 2) CUDT::sendCtrl中调用CSndQueue::sendto发送控制报文。 …

ADC采样效应及相关影响解剖

在前述文章&#xff0c;BUCK电路模拟补偿器的数字化过程 &#xff0c;我们讨论了模拟补偿器的数字化&#xff0c;事实上&#xff0c;数字化过程的第一个重要的环节就是ADC对反馈量的采样&#xff0c;本文就重点探讨一下由于ADC采样频率带来的一些问题&#xff0c;进而讨论一下相…

2012.2.9日晚亚马逊的一个错误链接截图

1现在时间 2 问题链接 http://www.amazon.cn/%E5%81%A5%E8%BA%AB%E5%99%A8%E6%A2%B0/b/refsa_menu_sef7?ieUTF8&node42787071 3 点击后结果 http://www.amazon.cn/gp/product/B0073RWUQA/refs9_hps_bw_g200_ir05?pf_rd_mA1AJ19PSB66TGU&pf_rd_scenter-5&pf_rd_r0…

Kotlin 的 Array 转 List

Kotlin 的 Array 转 List array.toList() as List<T> 1Kotlin 的 Array 转 ArrayList array.toList() as ArrayList<String>转载于:https://www.cnblogs.com/weizhxa/p/10068944.html

[转]关于sizeof()的一些思考

关键字&#xff1a;sizeof&#xff0c;字节对齐&#xff0c;多继承&#xff0c;虚拟继承&#xff0c;成员函数指针 前向声明&#xff1a; sizeof&#xff0c;一个其貌不扬的家伙&#xff0c;引无数菜鸟竟折腰&#xff0c;小虾我当初也没少犯迷糊&#xff0c;秉着“辛苦我一个…

RCF的优势--分布式应用

RCF(远程调用框架)是一个可以移植的C进程间通信框架&#xff0c;使用C语言特性&#xff0c;提供了一个简单高效的编写分布式C软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样&#xff0c…

深漂结束

早上起来看了勇士和凯尔特人的比赛&#xff0c;勇士还不能适应凯尔特人的防守&#xff0c;除了防守之外&#xff0c;凯尔特人这场比赛的三分球着实太高了。说到篮球&#xff0c;突然想起一个刚离开深圳去惠州工作的朋友。上周二中午&#xff0c;吃饭的时候我打开手机&#xff0…

RS 学习笔记 3-1

3-1 fence climb onto/jump off salad towel napkin ladder 转载于:https://blog.51cto.com/mingii/776041

JS的八大数据类型

js中的数据类型&#xff0c;包括基本数据类型&#xff08;Number,String,Boolean, Undefined,Null&#xff09;和 复杂&#xff08;引用&#xff09;数据类型&#xff08;Object,Array,Function&#xff09; 基本数据类型 基本数据类型指的是简单的数据段 &#xff08;Number,S…

嵌入式软件是这样debug的

【单步调试】【多线程调试】调试过多线程的都懂的。【断点调试】【递归调试】调试过递归代码的都有这种耳鸣目眩的感觉。【老旧代码调试】对于早期已经缝缝补补的庞大软件代码进行调试&#xff0c;还不如推倒重来。【生产中代码调试】【用户等待调试结果】【掩耳盗铃式调试】【…

可以直接在C++里面写类似RSL的shader了

可以直接在C里面写类似RSL的shader了 今天我搞定了一个新技术 可以直接在C里面写类似RSL的shader了 我简要介绍一下这个新技术&#xff0c;我还在考虑是否要在我们的项目中应用 这个技术的优势是可以借助现有的C编译器&#xff0c;将shader直接编译成机器码执行&#xff0c;这样…

UDT中select异常

转载&#xff1a;http://blog.csdn.net/seebit/article/details/6050428 select, selectEx的参数采用了stl的容器&#xff0c;在DLL方式下&#xff0c;会发生异常。 select传入的容器内的对象在DLL内部发生释放操作时&#xff0c;会抛出异常&#xff0c;因为主程序和DLL申请的内…

iOS中有两种支持机制:Notification和KVO(Key-Value Observing)

KVO是iOS中的一个核心概念&#xff0c;简单理解就是&#xff1a;关注Model某个数据&#xff08;Key&#xff09;的对象可以注册为监听器&#xff0c;一旦Model某个Key的Value发生变化&#xff0c;就会广播给所有的监听器&#xff08;http://blog.chinabyte.com/a/1557371.html&…

Apache与Tomcat有什么关系和区别

常在用apache和tomcat等这些服务器&#xff0c;可是总感觉还是不清楚他们之间有什么关系&#xff0c;在用tomcat的时候总出现apache&#xff0c;总感到迷惑&#xff0c;到底谁是主谁是次&#xff0c;因此特意在网上查询了一些这方面的资料&#xff0c;总结了一下&#xff1a; …