log4j控制台appender和日志文件大小

时间:2010-01-08 13:48:37

标签: jboss log4j stdout

我在Solaris中使用Jboss 4.0.2来运行webapp。

JBoss配置为使用出厂默认的log4j.xml文件,并且它有一个ConsoleAppender。我正在将jboss java进程的stdout重定向到一个文件。

当我尝试清理这个文件时会发生一些有趣的事情 - jboss.out。

这是我开始的地方。

$ ls -alhrt jboss.out
-rw-r--r--   1 ipunity  ipunity     458M Jan  8 07:22 jboss.out

然后我清理这个文件。 Jboss还在运行。

$ >jboss.out
$ ls -alhrt jboss.out
-rw-r--r--   1 ipunity  ipunity        0 Jan  8 07:24 jboss.out

现在如果点击我的webapp中的链接,就会开始记录,但整个文件会再次出现!

$ ls -alhrt jboss.out
-rw-r--r--   1 ipunity  ipunity     458M Jan  8 07:25 jboss.out

关于最新进展的任何想法?

ConsoleAppender缓冲数据吗?我没有足够的内存来容纳458MB,我的磁盘交换几乎未使用。我也没有看到任何临时文件这么大。

1 个答案:

答案 0 :(得分:2)

这可能是一个稀疏文件,由操作系统创建,当JBoss发出写入时,文件指针设置为+ [无论文件的旧大小是什么]。

检查新文件实际使用的磁盘空间 - 在大多数unices上,du -k jboss.out应该有效。如果文件稀疏,您应该会看到明显小于ls所示大小的内容。

通常,在写入日志文件时删除它们很棘手。为了在捕获stdout时避免这个问题,我倾向于将stdout传递给cronologrotatelogs之类的程序,而不是直接传递给文件。