要开启Dubbo3的Log4j日志配置,需区分不同版本并完成以下步骤:
️ 一、Dubbo 3.3.0-beta.3之前的版本(使用Log4j)
-
添加Log4j依赖
在项目pom.xml
中引入Log4j依赖(需确保项目中无其他日志框架冲突依赖):<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
-
创建Log4j配置文件
在资源目录(如src/main/resources
)下新建log4j.properties
文件,配置日志级别与输出格式:# 设置根日志级别为INFO,输出到控制台和文件 log4j.rootLogger=INFO, stdout, file # 控制台输出配置 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%c] - %m%n # 文件输出配置(按天滚动) log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=/var/log/dubbo-service.log log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%c] - %m%n
-
启用Dubbo访问日志(可选)
在Dubbo协议配置中开启访问日志(注意日志量较大):<dubbo:protocol accesslog="true" /> <!-- 输出到应用日志 --> <!-- 或指定独立文件 --> <dubbo:protocol accesslog="/path/to/dubbo-access.log" />
⚠️ 二、注意事项
-
日志框架优先级冲突
Dubbo默认按以下顺序选择日志框架:
Log4j > SLF4J > JCL > JDK Logging
。
若项目中存在其他日志框架(如Slf4j),需排除其依赖以确保Log4j生效。 -
Dubbo 3.3.0-beta.3及以上版本
官方已统一升级至 Log4j2,需改用Log4j2配置:- 移除Log4j依赖,引入Log4j2依赖包(如
log4j-core
,log4j-slf4j-impl
)。 - 使用
log4j2.xml
替换log4j.properties
。
- 移除Log4j依赖,引入Log4j2依赖包(如
-
配置生效验证
- 检查是否通过系统参数指定日志框架:
-Ddubbo.application.logger=log4j
- 确保无多个日志配置文件冲突(如同时存在
log4j.properties
和logback.xml
)。
- 检查是否通过系统参数指定日志框架:
⚡ 三、问题排查
若日志未生效,尝试:
- 清理项目依赖,排除冲突的日志框架JAR包(如
slf4j-log4j12
,logback-classic
)。 - 确认
log4j.properties
文件位置正确(位于src/main/resources
)。 - 检查文件路径权限(尤其Linux系统)。
安全提示:Log4j 1.x 存在已知漏洞,建议升级到Log4j2或Slf4j+Logback方案。