java lombok logback 配置日志打印

meven

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

resources/logback.xml 文件配置

<?xml version="1.0" encoding="UTF-8"?><configuration>    <!-- 项目名称 -->    <property name="projectname" value="testapollo" />    <!-- 日志存放路径 -->   <property name="log.path" value="/app/${projectname}}/logs" />    <!-- 日志输出格式 -->   <property name="log.pattern" value="%d{yyy-MM-dd HH:mm:ss.SSS} [%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

   <!-- 控制台输出 -->   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">      <encoder>         <pattern>${log.pattern}</pattern>      </encoder>   </appender>

   <!-- 系统日志输出 -->   <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">       <file>${log.path}/${projectname}-info.log</file>        <!-- 循环政策:基于时间创建日志文件 -->      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 日志文件名格式 -->         <fileNamePattern>${log.path}/${projectname}-info.%d{yyyy-MM-dd}.log</fileNamePattern>         <!-- 日志最大的历史 60天 -->         <maxHistory>60</maxHistory>      </rollingPolicy>      <encoder>         <pattern>${log.pattern}</pattern>      </encoder>      <filter class="ch.qos.logback.classic.filter.LevelFilter">            <!-- 过滤的级别 -->            <level>INFO</level>            <!-- 匹配时的操作:接收(记录) -->            <onMatch>ACCEPT</onMatch>            <!-- 不匹配时的操作:拒绝(不记录) -->            <onMismatch>DENY</onMismatch>        </filter>   </appender>

   <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">       <file>${log.path}/${projectname}-error.log</file>        <!-- 循环政策:基于时间创建日志文件 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 日志文件名格式 -->            <fileNamePattern>${log.path}/${projectname}-error.%d{yyyy-MM-dd}.log</fileNamePattern>         <!-- 日志最大的历史 60天 -->         <maxHistory>60</maxHistory>        </rollingPolicy>        <encoder>            <pattern>${log.pattern}</pattern>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <!-- 过滤的级别 -->            <level>ERROR</level>         <!-- 匹配时的操作:接收(记录) -->            <onMatch>ACCEPT</onMatch>         <!-- 不匹配时的操作:拒绝(不记录) -->            <onMismatch>DENY</onMismatch>        </filter>    </appender>

   <!-- 系统模块日志级别控制  -->   <logger name="com.loop" level="info" />   <!-- Spring日志级别控制  -->   <logger name="org.springframework" level="warn" />

   <root level="info">      <appender-ref ref="console" />   </root>

   <!--系统操作日志-->    <root level="info">        <appender-ref ref="file_info" />        <appender-ref ref="file_error" />    </root>

</configuration>

在类上加上注解 @Slf4j

在类中直接打印对应级别的日志

log.info();                   //对比老版

log.error();

log.debug();           //对比老版

总结:

 在老版中的info和debug要输出;
          

 if(logger.isDebugEnabled()){

              logger.debug("xxxxxxxxx");

        }

Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。

在生产环境:禁止使用DEBUG日志,且有选择地输出INFO日志

默认的几个级别: debug < info < warn < error < fatal  

1)级别之间是包含的关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出。(这里可理解为纱网,日志级别越高,纱网的网孔越小,级别越低网孔越大)

2)基本上默认的级别没多大区别,就是一个默认的设定。你可以通过它的API自己定义级别。你也可以随意调用这些方法,不过你要在配置文件里面好好处理了,否则就起不到日志的作用了,而且也不易读,相当于一个规范,你要完全定义一套也可以,不用没多大必要。

3)这不同的级别的含义大家都很容易理解,这里就简单介绍一下:

debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。

info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。

warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。

error: 错误信息。用的也比较多。

fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。

添加日志依赖

假如maven依赖中添加了spring-boot-starter-logging:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>复制代码

那么,我们的Spring Boot应用将自动使用logback作为应用日志框架,Spring Boot启动的时候,由org.springframework.boot.logging.Logging-Application-Listener根据情况初始化并使用。

但是呢,实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。

参考:https://www.cnblogs.com/super-admin/p/10077129.html

原文地址:https://www.cnblogs.com/leeego-123/p/12664935.html

时间: 2024-11-09 10:16:42

java lombok logback 配置日志打印的相关文章

Spring Boot - Logback配置日志要考虑哪些因素

Spring Boot - Logback配置日志 出于性能等原因,Logback 目前是springboot应用日志的标配: 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式.@pdai Spring Boot - Logback配置日志 配置时考虑点 实现范例 综合范例 在配置前可以参考如下文章 參考文档 代码示例 最全的Java后端知识体系 https://www.pdai.tech, 每天更新中.... 配置时考虑点 支持日志路径,日志level等配置 日志控制配置通过appl

JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法

一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Begin LogBack Log--> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback<

SpringBoot+logback实现日志打印

logback介绍 logback是一款开源的日志框架,内核重写了,是基于log4j基础进行改良的.其官网为logback.qos.ch.logback在性能上有很大提升,拥有更多特性. logback-core:是其它两个模块的基础模块 logback-classic:log4j的改良版本,实现了Slf4j API logback-access:集成Servle环境时就需要logback了,可以提供Http访问的接口 日志级别 日志级别:ERROR, WARN, INFO, DEBUG or

SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印

一.Log4j2日志简介 日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境. 1.Log4j2特点 1)核心特点 相比与其他的日志系统,log4j2丢数据这种情况少:disruptor技术,在多线程环境下,性能高:并发的特性,减少了死锁的发生. 2)性能测试 2.日志打印之外观模式 每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,增加应用程序代码和日志框架的耦合性. <阿里巴巴Java开发手册>,其中有一条规范做了『强制』要求: SL

Java中多环境Logback配置与ELK日志发送

一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入: <!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId

SpringBoot 配置 AOP 打印日志

在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Oriented Programming,面向切面编程),它利用一种"横切"的技术,将那些多个类的共同行为封装到一个可重用的模块.便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. AOP中有以下概念: Aspect(切面):声明类似于Java中的类声明,在Asp

java log4j基本配置及日志级别配置详解

java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾,信心满满地去面试,结果别人一上来就问到了最近项目使用的日志系统是什么?日志级别是怎么配置的?当时我都蒙X了,平时都是项目经理搭的,我自己也是随便上网一搜往配置文件一黏贴就OK了.我就这么说完后面试官深深定了我一眼,当时我的内心羞愧到...... 1.2 闲话少说,讲讲日志的发展故事(如果已经了解的

springboot aop + logback + 统一异常处理 打印日志

1.src/resources路径下新建logback.xml 控制台彩色日志打印 info日志和异常日志分不同文件存储 每天自动生成日志 结合myibatis方便日志打印(debug模式) <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 可以在LogBack 的配置中使用相对路径--> &

日志框架一logback配置和使用

前言 Logback是由log4j创始人设计的又一个开源日志组件, 比log4j的性能好. 1.导入依赖 <!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version