日志框架之Logback的使用与详细配置

您所在的位置:网站首页 主题模块在框架中的名称 日志框架之Logback的使用与详细配置

日志框架之Logback的使用与详细配置

2024-04-21 23:47| 来源: 网络整理| 查看: 265

Logback 概述

Logback是一个Java日志框架,是log4j项目的继承者,也是log4j创始人设计的另一个开源日志组件,性能比log4j要好。它旨在解决log4j存在的一些问题,并提供了更高效和更灵活的日志框架。

Logback特点:

高性能:采用异步日志机制,可以将日志操作和业务逻辑分离,从而大幅度提升系统的性能。 灵活的配置:支持多种不同的配置方式,包括基于XML、Groovy、JSON等格式的配置文件,同时还支持通过代码进行配置。 多种日志级别:支持6种不同的日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL,用户可以根据需要选择合适的日志级别。 多种输出方式:支持多种不同的输出方式,包括控制台输出、文件输出、邮件发送等。用户可以根据需要选择合适的输出方式。 插件丰富:提供许多有用的插件,例如logstash-logback-encoder,可以将日志输出到ELK(Elasticsearch、Logstash、Kibana)平台上进行分析和可视化。 易于集成:Logback与Spring、Hibernate、JUnit等框架都有很好的集成,可以方便地进行应用程序的日志输出管理。

Logback三个主要模块:

1.logback-core

它是 Logback 的核心模块,提供了基本的日志功能。它支持多种输出格式和输出目标,包括控制台输出、文件输出和 Socket 输出。logback-core 可以与其他日志框架集成,例如 log4j 和 JDK Logging。

2.logback-classic

它是 Logback 的经典模块,是 log4j 的改进版。它提供了更强大的日志功能,并且向下兼容 log4j。它还支持 SLF4J,可以在不修改代码的情况下将应用程序从一个日志框架切换到另一个日志框架。

3.logback-access

它是 Logback 的访问模块,提供了基于 HTTP 请求的访问日志记录功能。使用 logback-access,可以记录每个请求的详细信息,包括请求方法、URL、响应状态码等。

配置文件结构

配置文件结构层次如下:

configuration : 配置文件的根元素,它包含了多个子元素:appender、logger 和 root appender : 定义了输出端,可以是控制台、文件、网络等,每一个appender都需要有一个唯一的名称和一个类定义 logger : 定义了日志记录器,用于记录指定类的日志信息。logger元素需要指定一个名称和一个级别,以及一个可选的appender-ref子元素,用于将日志记录器连接到一个appender root : 定义了根日志记录器,它会接收所有未被其他logger接收的日志事件

Logback 的配置文件通常是 XML 格式,文件名为 logback.xml。它的结构如下:

${AppName} 日志级别 ALL < TRACE < DEBUG < INFO < WARN < ERROR ch.qos.logback logback-classic 1.2.3

2.配置 Logback

创建一个 Logback 的配置文件(通常是 logback.xml),并为其定义 appender、logger 和 root 等元素。也可以不用配置。

3.使用 Logback记录日志

public class Logback { public static final Logger LOGGER = LoggerFactory.getLogger(Logback.class); @Test public void test() { LOGGER.error("error"); LOGGER.warn("wring"); LOGGER.info("info"); LOGGER.debug("debug"); LOGGER.trace("trace"); } } 18:05:38.202 [main] ERROR cn.ybzy.Logback - error 18:05:38.206 [main] WARN cn.ybzy.Logback - wring 18:05:38.207 [main] INFO cn.ybzy.Logback - info 18:05:38.207 [main] DEBUG cn.ybzy.Logback - debug 与Spring Boot集成

springboot集成了logback日志系统,默认读取名叫logback-spring.xml的配置文件,如果想自定义配置文件的名称,需要在spring boot配置文件中配置指定

logging: config: classpath:logback.xml

用法

public class MyTest { private static final Logger logger = LoggerFactory.getLogger(MyTest.class); public static void main(String[] args) { logger.info("info....."); logger.warn("warn" + "....."); logger.error("error,msg={}", "error...."); } } 与lombok集成

logback和lombok集成,使用@Slf4j注解标注类,直接使用log对象,需添加lombok依赖

org.projectlombok lombok true @Slf4j public class MyTest { public static void main(String[] args) { log.info("info....."); log.warn("warn" + "....."); log.error("error,msg={}", "error...."); } } Logback配置

logback组件之间的关系

1. Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。 2. Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。 3. Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Layout对象被封装在encoder中。 Logger配置

logger就是在程序需要使用的Logger对象

自定义日志名称的使用

private static final Logger threadLogger = LoggerFactory.getLogger("web"); Appender配置 ConsoleAppender配置 System.err ${pattern} utf-8 [ERROR] 2021-03-21 18:16:14.273 cn.ybzy.Logback test 13 [main] error [WARN ] 2021-03-21 18:16:14.277 cn.ybzy.Logback test 14 [main] wring [INFO ] 2021-03-21 18:16:14.278 cn.ybzy.Logback test 15 [main] info [DEBUG] 2021-03-21 18:16:14.278 cn.ybzy.Logback test 16 [main] debug [TRACE] 2021-03-21 18:16:14.279 cn.ybzy.Logback test 17 [main] trace FileAppender配置 ${log_dir}/logback.log ${pattern} HtmlAppender配置 ${log_dir}/logback.html %-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m

在这里插入图片描述

RollingFileAppender配置

rollingPolicy子标签:滚动策略。常用的滚动策略如下:

${log_dir}/roll_logback.log ${pattern} utf-8 ${log_dir}/rolling.%d{yyyy-MM-dd}.log%i.zip 30 1MB

在这里插入图片描述

Filter配置

可以为appender 添加一个或多个过滤器,可以用任意条件对日志进行过滤。 appender 有多个过滤器时,按照配置顺序执行

filter的类型

LevelFilter:

根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据 onMath (用于配置符合过滤条件的操作) 和 onMismatch (用于配置不符合过滤条件的操作)接收或拒绝日志

ThresholdFilter:

临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回 NEUTRAL ;当日志级别低于临界值时,日志会被拒绝。

ERROR ACCEPT DENY 异步日志配置 示例配置 ${LOG_CONTEXT_NAME} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n utf-8 INFO true ${LOG_HOME}/%d{yyyy-MM-dd}/info/info.%d{yyyy-MM-dd-HH}.%i.log 30 10MB %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n utf-8 INFO ACCEPT DENY ERROR ACCEPT DENY WARN ACCEPT DENY


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3