更改apachestorm拓扑的log4j配置

xxhby3vn  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(353)

我目前正在使用以下命令通过java应用程序以编程方式提交storm拓扑:

Nimbus.Client client = NimbusClient.getConfiguredClient(stormConfigProvider.getStormConfig()).getClient();
client.submitTopology(
        this.topologyID.toString(),
        stormJarManager.getRemoteJarLocation(),
        JSONValue.toJSONString(stormConfigProvider.getStormConfig()),
        topology
);

在我的场景中,我有两种拓扑。测试拓扑和生产拓扑。对于这两种拓扑,我需要不同类型的日志记录。当测试拓扑以跟踪级别运行时,生产拓扑将以信息级别运行。此外,我要求生产拓扑配置一个splunk log4j2 appender,以集中记录我的生产应用程序。
为此,我在配置splunk appender的topologyjar中包含了一个log4j.xml文件。但是,服务器不接受log4j.xml文件。相反,storm服务器似乎使用自己的配置。
如何更改不同拓扑的log4j配置(我不想修改每个worker上的log4j.xml)。

zbwhf8kr

zbwhf8kr1#

你可以用https://storm.apache.org/releases/current/dynamic-log-level-settings.html 为每个拓扑设置日志级别。
我不确定您如何根据加载的拓扑添加/删除splunk appender。您可以通过编程方式配置log4jhttps://logging.apache.org/log4j/2.x/manual/customconfig.html 并设置 log4j2.configurationFactory 系统属性来指向配置工厂(您可以通过将其添加到 topology.worker.childopts 属性)。
仅针对上下文,这里是storm设置导致log4j加载worker log4j配置的系统属性的地方https://github.com/apache/storm/blob/4137328b75c06771f84414c3c2113e2d1c757c08/storm-server/src/main/java/org/apache/storm/daemon/supervisor/basiccontainer.java#l560. 如果您想加载包含在拓扑jar中的log4j2.xml,也许可以有条件地从worker的系统属性集中排除该设置。我认为这需要一个代码更改,所以你需要提出一个问题https://issues.apache.org/jira

相关问题