java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > logback日志控制服务器日志输出

logback日志控制服务器日志输出过程

作者:躲在没风的地方

文章介绍了SpringBoot中Logback日志配置方法,涵盖默认依赖、YAML/XML配置方式、MDC上下文信息应用、Linux部署注意事项及常见问题解决方案,重点强调日志格式统一处理与权限配置

logback-spring.xml文件

一、确认依赖(Spring Boot 默认集成 Logback)

Spring Boot 默认使用 Logback 作为日志框架,无需额外添加依赖。

若需自定义配置,可直接编写配置文件。

二 配置 Logback(两种方式)

通过 application.yml/properties 配置(简洁版)

logging:
  level:
    root: INFO           # 全局日志级别
    com.example: DEBUG   # 自定义包日志级别
  file:
    path: /var/log/app/  # Linux日志存储路径(需提前创建目录)
  pattern:
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"  # 日志格式
  # 滚动策略(按时间分割)
  logback:
    rollingpolicy:
      file-name-pattern: /var/log/app/app-%d{yyyy-MM}.log.gz
      max-history: 30     # 保留30天日志

方式二:自定义 Logback XML 配置文件(灵活版)

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

  <!-- 日志格式 -->
  <property name="LOG_PATH" value="/var/log/app/"/>
  <property name="LOG_NAME" value="app"/>
  
  <!-- 控制台输出 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 滚动文件输出(按时间分割) -->
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}${LOG_NAME}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_PATH}${LOG_NAME}-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>1GB</totalSizeCap> <!-- 总占用空间 -->
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 错误日志单独输出 -->
  <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <file>${LOG_PATH}${LOG_NAME}-error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_PATH}${LOG_NAME}-error-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 日志级别配置 -->
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="ERROR_FILE"/>
  </root>
  
  <!-- 自定义包日志级别(如调试指定模块) -->
  <logger name="com.example" level="DEBUG" additivity="false">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
  </logger>

</configuration>

在application.yml中指定配置文件(可选,若文件名是logback-spring.xml则无需配置)

项目指定输出日志格式 MDC使用

1 想要输出指定日志格式:

  [日志输出时间戳] [全局ID] [父ID] [本地ID] [线程名] [日志级别] [tid值] [微服务托管主机名/IP] msg在代码中定义的字段:[微服务IP及端口] [提供方微服务名称或编号] [方法URL] [客户端ip][行为场景] [操作主体] [操作类型] [操作对象] [处理结果] [region]

[2025-05-12 09:25:29.002] [VFeSsNbCSEefRlyvxSR5pg] [0] [VFeSsNbCSEefRlyvxSR5pg] [httpWorkerThread-8001-6] [INFO] [TID: N/A] [NZB23315479/11.204.8.24] [http://11.204.8.24:8001] [xx微服务/系统] [/log/sayHello] [11.204.8.24] [用户行为][gushukuan] [账号更新] [user1 name from张**to 李**;moible from 186****1234to 186****5431;idcard from 110***********3210 to 120***********7890] [成功] [0]

2 核心结论

3 核心

4 代码配置

<configuration>
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!-- 定义日志格式,严格按需求顺序排列字段 -->
            <pattern>
                [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%X{globalId}] [%X{parentId}] [%X{localId}] [%thread] [%level] [%X{tid}] [%hostName/%X{serverIp}] [%X{serviceUrl}] [%X{serviceName}] [%X{methodUrl}] [%X{clientIp}] [%X{scene}] [%X{operator}] [%X{operation}] [%msg] [%X{result}] [%X{region}]%n
            </pattern>
        </encoder>
    </appender>

    <!-- 根日志级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

5 映射区别

三、Linux 服务器部署注意事项

1. 创建日志目录并设置权限

mkdir -p /var/log/app
chown -R tomcat:tomcat /var/log/app
chmod -R 755 /var/log/app

2. 打包与启动应用

mvn clean package -DskipTests
nohup java -jar app.jar > /dev/null 2>&1 &
tail -f /var/log/app/app.log

3. 日志滚动与管理

每天凌晨1点清理60天前的日志

0 1 * * * find /var/log/app -name “*.log.gz” -mtime +60 -exec rm {} ;

四、常见问题与解决方案

日志文件未生成

日志级别未生效

中文日志乱码

在 Logback 配置中添加编码设置:

UTF-8

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文