Logback日志基础及自定义配置代码实例

 更新时间:2020年09月17日 12:01:39   作者:贾树丙  
这篇文章主要介绍了Logback日志基础及自定义配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Logback日志基础配置

logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的。下面是最简单的一个配置,注意加粗的描述

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">

  <!--log.path定义的是局部变量,./logs指定的是相对路径下的文件夹logs-->
  <property name="log.path" value="./logs"/>

  <appender name="ROLLING-FILE-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">

    <!--这里的文件名是不能使用正则表达式,只能是定死的名字,实现了很久-->
    <file>${log.path}/errorlog.log</file>

    <!-- 日志输出格式:%d表示日期时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度
       %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息,%n是换行符 -->
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 每天日志归档路径以及格式,可以不使用log后缀,%i:当文件大小超过maxFileSize时,按照i进行文件滚动,i从0开始滚动 -->
      <FileNamePattern>${log.pat h}/errorlog.%d{yyyyMMdd}.log.%i.gz</FileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>4096MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!--日志文件保留天数-->
      <maxHistory>365</maxHistory>
    </rollingPolicy>
  </appender>

  <!-- 日志级别-->
  <root level="debug">   
    <appender-ref ref="ROLLING-FILE-OUT"/>
  </root>

</configuration>

在规范里,行结束符往往采用Linux结束符(\n),而不是上面那样的 %n。 这个\n ,使用txt文档查看,并没有换行

使用%的正则还有许许多多,比如如下:

<property name="CONSOLE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %yellow(%thread) | %green(%logger) | %msg%n"/>

再比如:%contextName 作用是 显示主机名

Logback日志自定义配置

即便如此,还是有很多想要的东西显示不了,这时就可自定义配置。比如我希望每条日志有个uuid类型的id,希望每条日志能打印ip地址

一、新建两个配置类,重写convert方法

package cn.jiashubing.config.logback;

import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import java.util.UUID;

public class LogIdConfig extends ClassicConverter {

  @Override
  public String convert(ILoggingEvent event) {
    return UUID.randomUUID().toString().replaceAll("-", "");
  }
}


package cn.jiashubing.config.logback;

import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class IPLogConfig extends ClassicConverter {

  @Override
  public String convert(ILoggingEvent event) {
    try {
      return InetAddress.getLocalHost().getHostAddress();
    } catch (UnknownHostException e) {
      e.printStackTrace();
    }
    return null;
  }
}

二、配置日志文件

<property name="log.path" value="./logs"/>
<conversionRule conversionWord="ip" converterClass="cn.jiashubing.config.logback.IPLogConfig" />
<conversionRule conversionWord="logid" converterClass="cn.jiashubing.config.logback.LogIdConfig" />

<appender name="ROLLING-FILE-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">       
  <file>${log.path}/errorlog.log</file>       
  <encoder>           
    <pattern>[loglevel=%level] [timestamp=%d{yyyy-MM-dd HH:mm:ss}] [logid=%logid] [ip=%ip] [cmd=%msg] \n</pattern>       
  </encoder>
  ...
</appender>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot+Tess4j实现牛的OCR识别工具的示例代码

    SpringBoot+Tess4j实现牛的OCR识别工具的示例代码

    这篇文章主要介绍了SpringBoot+Tess4j实现牛的OCR识别工具的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • java实现从方法返回多个值功能示例

    java实现从方法返回多个值功能示例

    这篇文章主要介绍了java实现从方法返回多个值功能,结合实例形式分析了集合类、封装对象、引用传递三种实现方法,需要的朋友可以参考下
    2017-10-10
  • springboot @Async 注解如何实现方法异步

    springboot @Async 注解如何实现方法异步

    这篇文章主要介绍了springboot @Async 注解如何实现方法异步,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot使用JUL实现日志记录功能

    SpringBoot使用JUL实现日志记录功能

    在SpringBoot中,我们可以使用多种日志框架进行日志记录,其中,JUL(Java Util Logging)是Java平台自带的日志框架,它提供了简单的 API 和配置,可以轻松地进行日志记录,本文将介绍如何在 SpringBoot中使用JUL进行日志记录,并提供示例代码
    2023-06-06
  • Java打包Jar包后使用脚本执行

    Java打包Jar包后使用脚本执行

    本文详细讲解了Java打包Jar包后使用脚本执行的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 浅谈java的接口和C++虚类的相同和不同之处

    浅谈java的接口和C++虚类的相同和不同之处

    下面小编就为大家带来一篇浅谈java的接口和C++虚类的相同和不同之处。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-12-12
  • 关于Maven生命周期相关命令演示

    关于Maven生命周期相关命令演示

    Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以高效地管理和构建Java项目
    2025-01-01
  • Spring Boot Nacos 实现不停服发布过程详解

    Spring Boot Nacos 实现不停服发布过程详解

    这篇文章主要为大家介绍了Spring Boot Nacos实现不停服发布过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 解决Spring在Thread中注入Bean无效的问题

    解决Spring在Thread中注入Bean无效的问题

    这篇文章主要介绍了解决Spring在Thread中注入Bean无效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 解决Java导入excel大量数据出现内存溢出的问题

    解决Java导入excel大量数据出现内存溢出的问题

    今天小编就为大家分享一篇解决Java导入excel大量数据出现内存溢出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论