springboot项目中配置self4j

首先,声明一下,springboot项目中默认情况下已经集成了self4J + LogBack.

slf4j作为一个接口定义,底层可以有很多实现框架,同时也可以支持别的日志实现或者框架打到sfl4j上。它的实现是基于不同的桥接包。slf4j作为接口定义,下面有很多种实现。实现原理是获取ILoggerFactory时执行初始化,初始化过程绑定实现对象:load出所有实现StaticLoggerBinder的类,然后获取他的单例,后面执行getLogger的时候都是调用这个单例类的方法获取对应有具体实现日志功能的Logger对象。如果有多个实现,之后绑定其中的一个。这种情况需要排除掉不需要的日志实现类。

在resource根目录下创建logback.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><configuration>

    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />    <!-- 定义日志存储的路径,不要配置相对路径 -->    <property name="LOG_FILE_PATH" value="E:/logs/demo.%d{yyyy-MM-dd}.%i.log" />

    <!-- 控制台输出日志 -->    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->            <pattern>${LOG_PATTERN}</pattern>        </encoder>    </appender>

    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile是用来切分文件的 -->    <appender name="FILE"              class="ch.qos.logback.core.rolling.RollingFileAppender">        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${LOG_FILE_PATH}</fileNamePattern>            <!-- keep 15 days‘ worth of history -->            <maxHistory>30</maxHistory>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <!-- 日志文件的最大大小 -->                <maxFileSize>20MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>

        <encoder>            <pattern>${LOG_PATTERN}</pattern>        </encoder>    </appender>    <!-- project default level项目输出的日志级别 -->    <logger name="com.example.demo" level="DEBUG" />

    <!-- 日志输出级别 常用的日志级别按照从高到低依次为:ERROR、WARN、INFO、DEBUG。 -->    <root level="INFO">        <appender-ref ref="CONSOLE" />        <appender-ref ref="FILE" /><!--对应appender name="FILE"。 -->    </root></configuration>

日志输出级别

slf4j的日志级别分为五种(从高到低),只会输出比当前设置等级高的日志信息
error、warn、info、debug、trane

常用的是这是三个。

 info  一般处理业务逻辑的时候使用,就跟 system.err打印一样,用于说明此处是干什么的。slf4j使用的时候是可以动态的传参的,使用占位符 {} 。后边一次加参数,会挨个对应进去。

debug: 一般放于程序的某个关键点的地方,用于打印一个变量值或者一个方法返回的信息之类的信息

error: 用户程序报错,必须解决的时候使用此级别打印日志。

不常用的有:

warn:警告,不会影响程序的运行,但是值得注意。

 trane:  一般不会使用,在日志里边也不会打印出来,好像是很低的一个日志级别。



原文地址:https://www.cnblogs.com/wumingxiaozi/p/11296131.html

时间: 2024-10-31 20:48:34

springboot项目中配置self4j的相关文章

在SpringBoot项目中添加logback的MDC

在SpringBoot项目中添加logback的MDC 先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web controller,在同一时间可能收到来自多个客户端的请求,如果一个请求发生了错误,我们要跟踪这个请求从controller开始一步步都执行到了哪些代码.有哪些log的输出.这时我们可以看log文件,但是log文件是多个请求同时记录的,基本无法分辨哪行是哪个请求产生的,虽然我们可以看线程,但线程可能被复

SpringBoot项目实现配置实时刷新功能

需求描述:在SpringBoot项目中,一般业务配置都是写死在配置文件中的,如果某个业务配置想修改,就得重启项目.这在生产环境是不被允许的,这就需要通过技术手段做到配置变更后即使生效.下面就来看一下怎么实现这个功能. 来一张核心代码截图: ---------------------------------------------------------------------------- 实现思路: 我们知道Spring提供了@Value注解来获取配置文件中的配置项,我们也可以自己定义一个注解

SpringBoot 项目中使用Log4j2

Log4j 系列 log4j是apache实现的一个开源日志组件 logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现 log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步.等等),使得日志的吞吐量.性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活 slf4j是对所有日志框架制定的一种规范.标准.接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要

Java实战之路(1):SpringBoot项目中使用Mybatis打印Sql语句

SpringBoot项目中使用Mybatis打印Sql语句 如题,实际项目中使用很多都会用到SpringBoot+Mybatis的经典搭配进行开发,数据库里明明有数据,可是程序运行就是查不到,此时我们在本地Debug时,需要将Mybatis的实际Sql打印出来,看看Sql与我们期望的是否一致,或者将Sql拿到数据库中直接执行,看看结果.这里简单介绍几种实战中的用法. 方法一 properties:在application.properties配置文件中增加如下配置 logging.level.c

ckeditor编辑器在java项目中配置

一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将下载下来的CKEditor压缩解压,将解压后的文件夹("ckeditor")拷贝进项目里面,比如我是放在"WebContent"的"commons"文件夹下: B.在需要使用CKEditor的页面引入CKEditor的支持javascript <

springBoot项目中的static和templates文件夹

记录是为了更好的成长! 1.static文件中的页面 //这样写不能访问static中index文件夹下的index.html页面 @RequestMapping("index") public String hello() { return "/index/index"; } //这样写才能访问到 @RequestMapping("index") public String hello() { return "/index/index

解决Springboot项目中jpa扫描不到实体的问题

在一些情况下Springboot项目中jpa扫描不到实体.比如默认扫描不到引用的其他项目中定义的实体.导致无法自动创建表. 解决方法,在Application中自定义实体扫描的包 @EntityScan(basePackages = {"com.aaa"}) @SpringBootApplication @EnableDiscoveryClient @ComponentScan(basePackages = {"com.aaa.*"}) @EntityScan(ba

springboot项目中,@transactional 无效

问题: springboot项目,依然是使用jpa.Hibernate来操作mysql,涉及到数据库的操作,就少不了事务.写了一个接口,用来测试@Transaction注解的作用,发现没有效果 分析: 在项目启动时候,看到Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM,说明是MyISAM引擎,由此我们也就很容易想到MyISAM与InnoDB之间的区别 解决: 发现Hibernate默认创建的表是

在前后端分离的SpringBoot项目中集成Shiro权限框架

项目背景 公司在几年前就采用了前后端分离的开发模式,前端所有请求都使用ajax.这样的项目结构在与CAS单点登录等权限管理框架集成时遇到了很多问题,使得权限部分的代码冗长丑陋,CAS的各种重定向也使得用户体验很差,在前端使用vue-router管理页面跳转时,问题更加尖锐.于是我就在寻找一个解决方案,这个方案应该对代码的侵入较少,开发速度快,实现优雅.最近无意中看到springboot与shiro框架集成的文章,在了解了springboot以及shiro的发展状况,并学习了使用方法后,开始在网上