2010-01-08 4 views
0

Я использую Jboss 4.0.2 в Solaris для запуска webapp.log4j console appender и размер файла журнала

JBoss настроен на использование файла log4j.xml по умолчанию, и у этого есть ConsoleAppender. Я перенаправляю stdout процесса jboss java в файл.

Что-то интересное происходит, когда я пытаюсь очистить этот файл - 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 

Теперь, если идти нажмите на ссылку в моем веб-приложение, он начинает регистрацию, но весь файл вид вновь появляется снова!

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

Любые идеи о том, что происходит?

Является ли ConsoleAppender буферизацией данных? У меня недостаточно памяти для хранения 458 МБ, и мой дисковый обмен практически не используется. Я тоже не вижу никакого временного файла.

ответ

2

Это, вероятно, редкий файл, созданный ОС, когда JBoss выдает запись с указателем файла, установленным на + [независимо от старого размера файла].

Проверьте, действительно ли дисковое пространство используется новым файлом - на большинстве систем, du -k jboss.out должен работать. Если файл разрежен, вы должны увидеть что-то значительно меньшее, чем размер, показанный ls.

Как правило, удаление файлов журналов во время их написания является сложным. Чтобы избежать этой проблемы при захвате stdout, я склонен передавать stdout в программу, например cronolog или rotatelogs, а не прямо в файл.

Смежные вопросы