如何清除JBoss中的server.log?

JBoss运行时如何清除JBoss的server.log文件? 当我尝试做

echo 1 > server.log 

我得到错误消息,该文件正在被另一个程序(JBoss)使用。 是否可以使用命令行工具( WindowsLinux (我有CygWin ))或我可以自己写清除该文件的应用程序?

PS我不需要该文件有0kb,但我希望它有不到100MB

默认情况下,JBoss保持文件锁定,因为它正在写日志消息。 只要JBoss正在运行,它就被锁定了,我不知道有什么其他的方式来释放它,而不是阻止JBoss本身。

为了保持它的大小,你可以修改你的日志配置,默认是在<server>/conf˛jboss-log4j.xml 。 您可以指定日志文件的最大大小,并定义在达到该大小时要执行的操作:转到新文件,截断现有文件并再次开始写入,等等。

一个基本的例子(没有测试,所以不能保证它的工作原样):

  <appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender"> ... <param name="maxFileSize" value="100MB" /> ... </appender> 

而且,使用maxBackupIndex参数,您可以定义备份文件的数量(默认值为1)。

只要日志进程正在运行,JBoss就会锁定文件。

如果启用了JMX控制台,则可以停止日志记录,删除/修改日志,然后再次启动日志记录服务。

该网址应该是这样的(对于log4j):

http://jboss.example.com:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Atype%3DLog4jService%2Cservice%3DLogging

我用JBoss 5测试了这个。

这个解决方案也应该可以编写脚本。

关于您的日志文件大小问题:您应该使用配置方法,而不是手动编辑日志文件。