Jboss log4j控制台追加器和日志文件大小

Jboss log4j控制台追加器和日志文件大小,jboss,log4j,stdout,Jboss,Log4j,Stdout,我正在Solaris中使用Jboss 4.0.2运行一个webapp JBoss被配置为使用出厂默认的log4j.xml文件,并且它有一个ConsolePender。我正在将JBossJava进程的stdout重定向到一个文件 当我试图清理这个文件-jboss.out时,发生了一些有趣的事情 这就是我的出发点 $ ls -alhrt jboss.out -rw-r--r-- 1 ipunity ipunity 458M Jan 8 07:22 jboss.out 然后我清理这个

我正在Solaris中使用Jboss 4.0.2运行一个webapp

JBoss被配置为使用出厂默认的log4j.xml文件,并且它有一个ConsolePender。我正在将JBossJava进程的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
有什么想法吗


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

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

检查新文件实际使用的磁盘空间——在大多数Unice上,
du-kjboss.out
应该可以工作。如果文件是稀疏的,您应该会看到一些明显小于
ls
所示大小的内容

通常,在写入日志文件时删除日志文件是很棘手的。为了避免在捕获标准输出时出现这个问题,我倾向于将标准输出管道传输到一个类似于或的程序,而不是直接传输到一个文件