Apache Storm拓扑能否配置独立的log4j2配置文件?
Apache Storm 拓扑独立Log4j2配置方案
问题背景
需要为Apache Storm集群中的每个拓扑配置独立的Log4j2自定义配置,已知可单独调整拓扑日志级别,但需实现更个性化的日志规则(如不同输出格式、自定义Appender等)。尝试过以下方法均未成功:
- 使用
storm.yaml中的storm.log4j2.conf.dir配置,但该参数为全局配置,会作用于所有拓扑 - 尝试为单个拓扑指定独立的
storm.yaml,无可行方式 - 提交拓扑时添加JVM参数
-Dlog4j.configurationFile=classpath:log4j2.xml(配置文件已打包进拓扑JAR),但未生效
Apache Storm v1.2.4 情况
无法实现拓扑专属Log4j2配置
Storm拓扑专属配置仅允许覆盖以TOPOLOGY为前缀的参数,而默认配置文件defaults.yaml中没有任何与日志相关的可覆盖参数,因此在v1.2.4版本中,没有官方支持的方式为单个拓扑配置独立的Log4j2规则。
Apache Storm v2.0.0 及以上版本
支持拓扑专属Log4j2配置
从v2.0.0版本开始,Storm新增了topology.logging.config.file配置项,可实现单拓扑独立日志配置,具体操作:
- 将自定义的Log4j2配置文件(如
log4j2.xml)打包进拓扑的JAR包中 - 在拓扑代码中添加配置:
或者在提交拓扑时通过命令行指定该参数Config config = new Config(); config.put(Config.TOPOLOGY_LOGGING_CONFIG_FILE, "classpath:log4j2.xml");
内容的提问来源于stack exchange,提问作者MeanwhileInHell
相关产品推荐
相关产品推荐

