← 返回首页

Java日志框架:记录应用运行轨迹

📂 java ⏱ 1 min 172 words

Java日志框架:记录应用运行轨迹

概述

日志是应用开发中不可或缺的部分,它帮助开发者调试问题、监控应用状态和审计操作。Java提供了多种日志框架,其中Logback和SLF4J是最流行的组合。

1. SLF4J与Logback

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggingDemo {
    private static final Logger logger = LoggerFactory.getLogger(LoggingDemo.class);

    public static void main(String[] args) {
        logger.trace("Trace级别日志");
        logger.debug("Debug级别日志");
        logger.info("Info级别日志");
        logger.warn("Warn级别日志");
        logger.error("Error级别日志");
    }
}

2. Logback配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

3. 日志使用场景

public class OrderService {
    private static final Logger logger = LoggerFactory.getLogger(OrderService.class);

    public void processOrder(Order order) {
        logger.info("开始处理订单: {}", order.getId());
        try {
            validateOrder(order);
            saveOrder(order);
            sendNotification(order);
            logger.info("订单处理完成: {}", order.getId());
        } catch (Exception e) {
            logger.error("订单处理失败: {}", order.getId(), e);
            throw e;
        }
    }
}

4. 日志级别

public class LogLevelDemo {
    private static final Logger logger = LoggerFactory.getLogger(LogLevelDemo.class);

    public static void main(String[] args) {
        if (logger.isTraceEnabled()) {
            logger.trace("详细跟踪信息");
        }
        if (logger.isDebugEnabled()) {
            logger.debug("调试信息");
        }
        logger.info("一般信息");
        logger.warn("警告信息");
        logger.error("错误信息");
    }
}

最佳实践

  1. 使用SLF4J:日志门面,便于切换实现
  2. 合理使用日志级别:生产环境使用INFO或WARN
  3. 避免字符串拼接:使用占位符{}
  4. 记录异常信息:logger.error("msg", exception)
  5. 敏感信息脱敏:避免记录密码等敏感信息

总结

日志是应用开发的重要组成部分,掌握SLF4J和Logback的使用,可以实现完善的日志管理。合理使用日志级别和格式,可以帮助开发者快速定位和解决问题。