JBoss EAP 6.2 - 如何在domain.xml中的日志记录配置中使用server-name

时间:2015-08-20 10:59:02

标签: logging jboss jboss-eap-6

快速上下文:

  • 我有两个主机,我有jboss eap 6.2。
  • 在每个host.xml中我定义了2个服务器(比如Host1Server1,Host1Server2,Host2Server1,Host2Server2)。
  • 所有这4台服务器都属于同一服务器组(比如myServerGroup)
  • myServerGroup使用配置文件full-ha
  • 所有配置(JVM设置,部署等)都在Host1上的domain.xml中
  • 在Host2上,domain.xml不存在(它被重命名为domain.xml.dont.use)
  • 我在每台主机上使用domain.sh启动服务器(而不是standalone.sh)(在host2上,domain.sh使用-P参数传递属性文件,属性文件设置属性jboss.domain.master .address指向Host1。

问题陈述:

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

<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>
...
...

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

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

我最想做的事情就是让它看起来像......

sprintf

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

有没有办法解决这个问题?

提前致谢。

- Parag

2 个答案:

答案 0 :(得分:0)

评估的一个选项是找到一种方法来覆盖各个服务器的启动脚本中的日志文件名。您可以将几个参数设置为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合作,我没有尝试上述任何步骤:)

答案 1 :(得分:0)

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

您可以做的是将directory-grouping资源上的host属性更改为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中更新属性,请在默认主机(主服务器)上使用以下操作。

/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"
}