JBoss EAP 6.2 - 如何在 domain.xml 中的日志记录配置中使用服务器名称

JBoss EAP 6.2 - How to use server-name in logging configuration in domain.xml

快速上下文:

问题陈述:

我想要实现的是这些服务器的日志文件写在同一个文件夹中,文件名应该包含服务器名称。例如...

/my/logdir/Host1Server1.log
/my/logdir/Host1Server2.log
/my/logdir/Host2Server1.log
/my/logdir/Host2Server2.log

我不知道如何做到这一点。当前在 Host1 上的 domain.xml 中,在配置文件 full-ha 下,日志记录定义为

<subsystem xmlns="urn:jboss:domain:logging:1.3">
  <periodic-rotating-file-handler name="FILE" autoflush="true">
  <formatter>
    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
  </formatter>
  <file relative-to="jboss.server.log.dir" path="server.log"/>
  <suffix value=".yyyy-MM-dd"/>
  <append value="true"/>
</periodic-rotating-file-handler>
...
...

理想情况下我想做的是让它看起来像...

  ...
  <file relative-to="jboss.server.log.dir" path="${jboss.server.name}.log"/>
  ...

但是当我这样做时,服务器没有启动 -- 它无法识别 jboss.server.name 属性.

有什么办法可以解决这个问题吗?

提前致谢。

-- 参数

要评估的选项之一是找到一种方法来覆盖各个服务器的启动脚本中的日志文件名。您可以将很少的参数设置为 JVM 参数,它们应该优先于 domain.xml 或 host.xml 中配置的参数。

自定义默认 log4j.properties/logging.properties 并通过编辑 run.sh 将其提供给 JVM,或者可以将其作为命令行参数提供。例如

run.bat -Dlogging.configuration=file:./logging.properties

并且在 logging.properties 中,您可以更改以下条目以获得适当的日志文件

handler.FILE.fileName=your/log/directory/<server.log>

参考文献:

https://developer.jboss.org/wiki/JBossBootLogging

https://developer.jboss.org/thread/233393

https://developer.jboss.org/thread/250554

免责声明:我很长时间没有使用 JBoss 并且我没有尝试任何上述步骤:)

问题是 jboss.server.name 系统 属性 在配置日志记录后设置。

您可以将 host 资源的 directory-grouping 属性更改为 by-type。这会将日志放在 $JBOSS_HOME/domain/logs/${jboss.server.name} 目录中。

domain/log/
├── host-controller.log
├── process-controller.log
└── servers
    ├── server-one
    │   └── server.log
    └── server-two
        └── server.log

要在 CLI 中更新属性,请在默认主机 (master) 上使用以下操作。

/host=master:write-attribute(name=directory-grouping,value=by-type)

然后您需要重新启动服务器。你的日志现在应该都在日志目录中,尽管在每个服务器的新目录下。

如果您在 CLI 中阅读 host=* 资源的资源,您将看到以下描述。

"directory-grouping" => {
    "type" => STRING,
    "description" => "Describes how the writable directories for servers managed by this host controller should be organized. The default value, 'by-server', indicates each server's writable directories should be grouped under the server's name in the domain/servers directory. The alternative, 'by-type' indicates each server's writable directories should be grouped based on their \"type\" (i.e. \"data\", \"log\", \"tmp\") with directories of a given type for all servers appearing in the domain level directory for that type, e.g. domain/data/servers/server-name.",
    "expressions-allowed" => true,
    "nillable" => true,
    "default" => "by-server",
    "allowed" => [
        "by-type",
        "by-server"
    ],
    "access-type" => "read-write",
    "storage" => "configuration",
    "restart-required" => "all-services"
}