Nacos 服务端日志文件过大如何配置 logback 进行滚动切割?

文章导读
先说结论:修改 Nacos 服务端 conf 目录下的 logback-nacos.xml,将 RollingPolicy 调整为 SizeAndTimeBasedRollingPolicy,并务必配置包含 %i 索引符的 fileNamePattern,重启服务即可限制单文件体积。
📋 目录
  1. 核心配置示例
  2. 分步处理
  3. 怎么验证是否生效
  4. 常见坑与风险
  5. 参考来源
A A

先说结论:修改 Nacos 服务端 conf 目录下的 logback-nacos.xml,将 RollingPolicy 调整为 SizeAndTimeBasedRollingPolicy,并务必配置包含 %i 索引符的 fileNamePattern,重启服务即可限制单文件体积。

  • 适合:磁盘空间有限、日志增长过快导致告警的场景
  • 先准备:备份原始配置文件,确认 Nacos 启动方式( standalone/Docker)
  • 验收:重启后观察 logs 目录,确认日志文件按大小切割且带有索引后缀

核心配置示例

以下是完整的 RollingFileAppender 配置片段,请替换原文件中对应的 appender 配置。关键点在于 fileNamePattern 必须包含 %d{日期} 和 %i{索引}。

<appender name="nacos" class="ch.qos.logback.core.rolling.RollingFileAppender"
>
    <file>logs/nacos.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
        <!-- 必须包含 %i,否则大小切割不生效 -->
        <fileNamePattern>logs/nacos.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>50MB</maxFileSize>
        <maxHistory>15</maxHistory>
        <totalSizeCap>2GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%date{yyyy-MM-dd HH:mm:ss} %level [%thread] %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

分步处理

1. 定位配置文件
standalone 部署路径通常为 Nacos 安装目录下的 conf/logback-nacos.xml。Docker 部署需进入容器内部或检查挂载卷路径。

2. 备份原文件
执行以下命令备份,防止配置错误导致服务无法启动:

cd conf
cp logback-nacos.xml logback-nacos.xml.bak

3. 修改滚动策略
使用编辑器打开文件,搜索 <appender name="nacos" 或 <appender name="FILE"。找到 rollingPolicy 节点,确保 class 属性为 ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy。

4. 关键配置检查
务必检查 fileNamePattern 是否包含 %i。如果只配置了 %d,日志只会按天切割,不会按大小切割。同时建议添加 totalSizeCap 限制日志总占用空间。

5. 重启服务
Logback 配置在启动时加载,修改后需重启 Nacos 服务端:

Nacos 服务端日志文件过大如何配置 logback 进行滚动切割?
sh bin/shutdown.sh
sh bin/startup.sh -m standalone

怎么验证是否生效

重启服务产生一定日志后,执行以下命令检查:

# 查看日志文件大小及命名格式
ls -lh logs/nacos*

# 检查总占用空间
du -sh logs/

预期结果:应看到类似 nacos.log.2023-10-27.0、nacos.log.2023-10-27.1 的文件,且单个文件大小不超过设定的 maxFileSize(如 50MB)。

常见坑与风险

1. 缺少 %i 索引符
SizeAndTimeBasedRollingPolicy 必须在 fileNamePattern 中包含 %i,否则无法在同一天内生成多个文件,导致大小限制失效。

2. XML 语法错误
logback 配置文件是严格的 XML 格式,标签未闭合或特殊字符未转义会导致启动报错。查看 logs/startup.log 或控制台输出排查 XML 解析错误。

3. 升级被覆盖
直接修改安装包 conf 目录下的文件,在升级 Nacos 版本时会被覆盖。建议记录修改内容,或使用 -Dlogging.config 参数指向外部配置文件,Docker 环境建议挂载外部配置。

4. 权限问题
确保启动 Nacos 的用户对 logs 目录有写权限,否则滚动切割时会因无法重命名文件而失败。

参考来源

  • Nacos 官方 GitHub 仓库配置文件结构
  • Logback 官方文档 - RollingPolicy