我想编写一个 shell 脚本来停止我当前正在运行的 jboss 应用程序(一个服务器中可能运行多个 jboss)并重命名日志目录中生成的相应日志文件。重命名的文件必须包含脚本运行时的时间,这将有助于识别该文件。请帮帮我...
答案1
您可以按照 Ignacio 的建议使用 logrotate。例如,以下配置片段显示了如何对系统消息文件进行日志轮转并重新加载 syslogd 进程。您可以分别使用 prerotate 和 postrotate 在轮转日志文件之前和之后执行脚本/命令。
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
欲了解更多信息,请查看man logrotate
。
答案2
cmiiw 我认为你只需在 jboss-log4j.xml 上启用 logrotate
<pre><code>
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="${jboss.server.log.threshold}"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
</layout>
</appender>
</pre></code>