博客
关于我
logback的使用和logback.xml详解
阅读量:799 次
发布时间:2023-02-06

本文共 2425 字,大约阅读时间需要 8 分钟。

Logback日志框架详解

Logback简介

Logback 是由 log4j 创始人设计的开源日志框架,其官方网站为 http://logback.qos.ch。Logback 是 slf4j(简单日志框架接口)框架的默认实现之一,支持通过配置切换到其他日志框架如 log4j 或 JDK 14+ 的日志机制。

Logback 取代 Log4j 的理由

  • 性能提升:Logback 的核心实现经过重写,在关键执行路径上性能提升达十倍以上,初始化内存加载更小。
  • 测试充分性:经过数年测试,Logback 的稳定性无可匹敌。
  • SLF4J 自然支持:Logback-classic 对 SLF4j 的实现天然且透明,切换日志框架仅需更换 JAR 包即可,无需修改代码。
  • 文档丰富:官方文档包含数百页,详细指导使用和配置。
  • 动态配置:Logback 自动检测配置文件修改,支持多种环境(开发、测试、生产)通过单一配置文件适配。
  • 高级功能
    • 过滤器:灵活控制日志输出,保护敏感信息。
    • SiftingAppender:根据运行参数分割日志文件,支持用户 Session 分离日志。
    • 自动压缩:RollingFileAppender 异步压缩日志文件,不影响应用运行。
    • 堆栈树包版本:打印日志时附带包版本信息。
    • 自动归档:通过 maxHistory 设置控制保存的日志文件数量。
    • 谨慎模式:多 JVM 安全写日志文件,支持 RollingFileAppender 恢复机制。
  • Logback 配置介绍

    核心配置项

  • Logger、Appender 和 Layout

    • Logger:记录日志的实例,可关联到特定上下文。
    • Appender:指定日志输出目标,如控制台、文件、数据库等。
    • Layout:格式化日志事件为字符串。
  • Logger 上下文

    • 每个 Logger 都关联到 LoggerContext,通过 LoggerFactory 获取。
    • 上下文名称可自定义,便于区分不同应用或模块。
  • 日志级别

    • 支持 TRACE、DEBUG、INFO、WARN、ERROR 等级别。
    • 若 Logger 未指定级别,按最近祖先级别继承,默认为 DEBUG。
  • 打印规则

    • 根据 Logger 的有效级别决定记录级别。
    • 级别排序:TRACE < DEBUG < INFO < WARN < ERROR。
  • 默认配置

    若无自定义配置文件,Logback 使用 BasicConfigurator,输出到控制台,格式化字符串为:%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n。

    Logback 配置文件语法

    • <configuration> 根节点,包含以下子节点:
      • <scan>:开启配置文件动态扫描(默认 true)。
      • <scanPeriod>:动态扫描间隔(默认 1 分钟)。
      • <debug>:启用调试日志输出(默认 false)。
      • <contextName>:设置上下文名称,默认为 default。
      • <property>:定义变量,可用于上下文替换。
      • <timestamp>:获取时间戳,用于自定义时间格式。
      • <appender>:定义输出目标(如控制台、文件等)。
      • <logger>:设置特定 Logger 的级别和 Appender。
      • <root>:配置根 Logger 的级别和 Appender。

    常用 Logger 配置示例

    %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    TestWeb.log
    ${LOG_HOME}/TestWeb.%d{yyyy-MM-dd}.log
    30
    %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    10MB

    Java 代码示例

    import ch.qos.logback.classic.Logger;import ch.qos.logback.classic.LoggerFactory;public class App {    private static final Logger logger = LoggerFactory.getLogger(App.class);        public static void main(String[] args) {        logger.info("Logback 成功了");        logger.error("Logback 成功了");        logger.debug("Logback 成功了");    }}

    总结

    Logback 是一个强大且灵活的日志框架,支持多种日志输出目标和级别控制。通过合理配置,开发人员可以轻松实现日志管理、监控和分析需求。Logback 的自动化配置和高性能特点,使其成为现代应用的首选日志框架。

    转载地址:http://dcufk.baihongyu.com/

    你可能感兴趣的文章
    NIO三大组件基础知识
    查看>>
    NIO与零拷贝和AIO
    查看>>
    NIO同步网络编程
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NIO笔记---上
    查看>>
    Vue3.0中的响应式原理(第九课)
    查看>>
    NIO蔚来 面试——IP地址你了解多少?
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NISP国家信息安全水平考试,收藏这一篇就够了
    查看>>
    NIS服务器的配置过程
    查看>>
    NIS认证管理域中的用户
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>