在 JBoss EAP 7 访问日志上执行每小时 logrotate
Posted
技术标签:
【中文标题】在 JBoss EAP 7 访问日志上执行每小时 logrotate【英文标题】:Perform hourly logrotate on JBoss EAP 7 access log 【发布时间】:2017-12-04 06:22:40 【问题描述】:默认情况下,JBoss EAP 7 每天轮换它的访问日志。 我需要将其设置为喜欢,HOURLY。
原因:
我们有一个脚本可以自动下载 rotated 访问日志文件。 但是这样做^会大大增加CPU使用率(因为一天结束时的访问日志非常大,而且下载时我们的系统性能不幸降低)我所知道的是,在 standalone.xml 中,我尝试添加以下内容以使 JBoss server 日志每小时轮换一次。
<suffix value=".yyyy-MM-dd-HH"/>
但是这种方法不适用于访问日志(因为它的设置奇怪地放在了standalone.xml的不同部分)
我尝试过使用access-log
标签来获得以下任何一项。但它只是抛出一个错误。
<access-log suffix=".yyyy-MM-dd-HH" ...
<access-log rotate="hourly" ...
...我似乎找不到关于 JBoss EAP 7 的 standalone.xml 的非常详细的指南。我想我应该为 access-log
使用标签值部分。
请帮忙。有谁知道这样做的方法? :(
系统规格
Oracle Linux 6.9 JBoss EAP 7谢谢和最好的问候。
【问题讨论】:
【参考方案1】:尝试关注
<subsystem xmlns="urn:jboss:domain:logging:3.0">
...(snip)...
<!-- size-based log rotation -->
<size-rotating-file-handler name="access-log" autoflush="true">
<formatter>
<named-formatter name="access-log-formatter"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="access.log"/>
<rotate-size value="10m"/>
<max-backup-index value="10"/>
<append value="true"/>
</size-rotating-file-handler>
<! -- or custom interval (hourly) log rotation
<periodic-rotating-file-handler name="access-log-custom" autoflush="true">
<formatter>
<named-formatter name="access-log-formatter"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="access.log"/>
<suffix value=".yyyy-MM-dd-HH"/>
<append value="true"/>
</periodic-rotating-file-handler>
--->
...(snip)...
<logger category="io.undertow.accesslog" use-parent-handlers="false">
<handlers>
<handler name="access-log"/>
</handlers>
</logger>
...(snip)...
<formatter name="access-log-formatter">
<pattern-formatter pattern="%s%n"/>
</formatter>
</subsystem>
...(snip)...
<subsystem xmlns="urn:jboss:domain:undertow:3.1" statistics-enabled="true">
...(snip)...
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" record-request-start-time="true"/>
<host name="default-host" alias="localhost">
...(snip)...
<access-log use-server-log="true" pattern="%h %l %u %t "%r" %s %b "%i,Referer" "%i,User-Agent" "%i,COOKIE" "%o,SET-COOKIE" %S "%I" %T"/>
...(snip)...
</host>
</server>
...(snip)...
</subsystem>
【讨论】:
感谢您的建议!虽然目前我还不能在我们的环境中对此进行测试(因为其他开发人员仍在使用它)。 只是一个小问题:这部分<access-log use-server-log...
是否意味着进入访问日志的内容现在将进入服务器日志文件?因为我们更喜欢让服务器日志和访问日志成为不同的文件。以上是关于在 JBoss EAP 7 访问日志上执行每小时 logrotate的主要内容,如果未能解决你的问题,请参考以下文章
JBoss EAP 6.4.4 中的空日志文件(日志配置文件)
无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源
JBoss EAP 7.3 上的 Primefaces 6 文件上传问题
在 DHCP 服务器 Linux 上启动 Jboss EAP 和 UnknownHostException
在 JBoss EAP 7 上注册服务器范围的 javax.ws.rs.client.ClientRequestFilter