You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Groovy配置log4j2 RollingFileAppender的示例

Groovy风格的Log4j2 RollingFileAppender简洁配置方案

以下是针对你的需求优化后的Groovy风格配置,完全摒弃Java样板代码的冗余,利用Groovy特性实现紧凑、易读的日志配置:

import groovy.util.logging.Log4j2
import org.apache.logging.log4j.Level
import org.apache.logging.log4j.core.config.Configurator
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory

// 初始化配置构建器,Groovy自动推断类型简化声明
def builder = ConfigurationBuilderFactory.newConfigurationBuilder()

// 定义通用日志格式,复用给所有Appender
def logLayout = builder.newLayout("PatternLayout")
    .addAttribute("pattern", "%d [%t] %-5level %logger{36} - %msg%n%throwable")

// 配置RollingFileAppender,整合轮转策略
def rollingAppender = builder.newAppender("rollingFile", "RollingFile")
    .addAttribute("fileName", "myapp.log") // 活跃日志文件名
    .addAttribute("filePattern", "myapp-%d{yyyy-MM-dd}-%i.log.gz") // 归档文件格式(按日期+索引+压缩)
    .add(logLayout)
    .addComponent(builder.newComponent("Policies")
        .addComponent(builder.newComponent("SizeBasedTriggeringPolicy").addAttribute("size", "100M")) // 文件达100M触发轮转
        .addComponent(builder.newComponent("TimeBasedTriggeringPolicy").addAttribute("interval", 1)) // 每日自动轮转
    )
    .addComponent(builder.newComponent("DefaultRolloverStrategy").addAttribute("max", 30)) // 最多保留30个归档文件

// 配置控制台Appender
def consoleAppender = builder.newAppender("stdout", "Console")
    .add(logLayout)

// 配置根日志级别,关联两个输出目标
builder.newRootLogger(Level.INFO)
    .add(builder.newAppenderRef("stdout"))
    .add(builder.newAppenderRef("rollingFile"))

// 生效配置
Configurator.initialize(builder.build())

@Log4j2
class MyApp {
    static void main(String[] args) {
        log.debug("调试日志内容")
        log.info("常规业务信息")
        log.error("错误告警", new Exception("模拟异常栈"))
    }
}

核心优化与功能说明

  • Groovy特性简化:利用链式调用、类型推断、省略冗余语法,将Java版的几十行配置压缩为紧凑的逻辑块,可读性更强。
  • 多策略轮转:同时支持按文件大小(100M)和时间(每日)触发轮转,满足复杂场景需求。
  • 归档管理:通过DefaultRolloverStrategy限制归档文件数量,避免磁盘空间被无限占用。
  • 格式统一:复用同一日志格式配置,确保控制台和文件日志输出风格一致。

执行方式

保持你原有的环境配置,直接运行脚本即可:

$ export CLASSPATH=$LIBS/log4j-api-2.20.0.jar:$LIBS/log4j-core-2.20.0.jar
$ groovy my-example.groovy

内容的提问来源于stack exchange,提问作者H. Dog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:37:04