根据环境变量在启动时有条件地启用 Wildfly json-formatter

问题描述 投票:0回答:1

我想根据服务器启动时环境变量的值启用 WildFly 的

json-formatter
进行日志记录。

当服务器已启动并且我通过

jboss-cli.sh
连接到它时,以下 CLI 命令可以正常工作。但是如何在启动服务器时控制此配置是否处于活动状态?

if (result == "true") of :resolve-expression(expression=${env.JSON_FORMATTER_ENABLED})
    /subsystem=logging/json-formatter=JSON:add(pretty-print=false, exception-output-type=formatted)
    /subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value="JSON")
end-if
jboss wildfly
1个回答
0
投票

如果这是最好的解决方案,我不会抱怨,但至少这是我能想到的最好的解决方案。

我添加了第二个

console-handler
,它使用了
json-formatter

# add separate console-handler with json-formatter
/subsystem=logging/json-formatter=JSON:add(pretty-print=false, exception-output-type=formatted)
/subsystem=logging/console-handler=CONSOLE-JSON:add(named-formatter="JSON", level=INFO)
/subsystem=logging/root-logger=ROOT:add-handler(name=CONSOLE-JSON)

然后,根据环境变量,我启用/禁用相应的

console-handler
,因为它似乎是唯一支持表达式的 WildFly 资源:

/subsystem=logging/console-handler=CONSOLE-JSON:write-attribute(name=enabled, value="${env.JSON_CONSOLE_HANDLER_ENABLED}"
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=enabled, value="${env.DEFAULT_CONSOLE_HANDLER_ENABLED}"

最后,在我的 Docker 启动脚本中

docker-entrypoint.sh
:

if [ "${JSON_FORMATTER_ENABLED}" == "true" ]; then
  export JSON_CONSOLE_HANDLER_ENABLED="true"
  export DEFAULT_CONSOLE_HANDLER_ENABLED="false"
else
  export JSON_CONSOLE_HANDLER_ENABLED="false"
  export DEFAULT_CONSOLE_HANDLER_ENABLED="true"
fi
© www.soinside.com 2019 - 2024. All rights reserved.