JBoss EAP 6.2 - 如何在 domain.xml 中的日志记录配置中使用服务器名称
JBoss EAP 6.2 - How to use server-name in logging configuration in domain.xml
快速上下文:
- 我有两台主机,上面装有 jboss eap 6.2。
- 在每个 host.xml 中,我定义了 2 个服务器(比如 Host1Server1、Host1Server2、Host2Server1、Host2Server2)。
- 所有这 4 台服务器都属于同一个服务器组(比如 myServerGroup)
- myServerGroup 使用配置文件 full-ha
- 所有配置(JVM 设置、部署等)都在 Host1domain.xml
中
- 在 Host2 上,domain.xml 不存在(已重命名为 domain.xml.dont.use)
- 我在每台主机上使用 domain.sh 启动服务器(不是 standalone.sh)(在主机 2 上,使用 -P 参数向 domain.sh 传递一个 属性 文件属性 文件将 属性 jboss.domain.master.address 设置为指向 Host1。
问题陈述:
我想要实现的是这些服务器的日志文件写在同一个文件夹中,文件名应该包含服务器名称。例如...
/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"
}
快速上下文:
- 我有两台主机,上面装有 jboss eap 6.2。
- 在每个 host.xml 中,我定义了 2 个服务器(比如 Host1Server1、Host1Server2、Host2Server1、Host2Server2)。
- 所有这 4 台服务器都属于同一个服务器组(比如 myServerGroup)
- myServerGroup 使用配置文件 full-ha
- 所有配置(JVM 设置、部署等)都在 Host1domain.xml 中
- 在 Host2 上,domain.xml 不存在(已重命名为 domain.xml.dont.use)
- 我在每台主机上使用 domain.sh 启动服务器(不是 standalone.sh)(在主机 2 上,使用 -P 参数向 domain.sh 传递一个 属性 文件属性 文件将 属性 jboss.domain.master.address 设置为指向 Host1。
问题陈述:
我想要实现的是这些服务器的日志文件写在同一个文件夹中,文件名应该包含服务器名称。例如...
/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"
}