博客
关于我
logback的使用和logback.xml详解
阅读量:790 次
发布时间: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/

    你可能感兴趣的文章
    List中new ArrayList和null有什么区别
    查看>>
    list之按照中文拼音首字母排序
    查看>>
    List内存分配
    查看>>
    List分批处理
    查看>>
    List去重工具类
    查看>>
    List去除重复数据的五种方式
    查看>>
    list循环删除元素中的坑
    查看>>
    List数据集动态排序
    查看>>
    list深拷贝和浅拷贝
    查看>>
    List集合排序找出其中的最大和最小值
    查看>>
    list<Map> 怎么转list<String>
    查看>>
    2025年04月10日IT技术领域重点关注焦点
    查看>>
    List<String>用空串替换null值,并且都加上单引号,并且转为字符串用,分割
    查看>>
    liunx 下WebBench 安装与压力测试
    查看>>
    Liunx 多命令/管道符/wc命令/man命令汉化
    查看>>
    liunx 服务内存消耗100% 怎么处理
    查看>>
    liunx 网络基础管理
    查看>>
    liunx-FTP服务器_无需整理
    查看>>
    liunx上安装MySQL没有默认my.cnf文件解决方案
    查看>>
    liunx上安装nodejs步骤
    查看>>