консольный приложение log4j и размер файла журнала - PullRequest
0 голосов
/ 08 января 2010

Я использую Jboss 4.0.2 в Solaris для запуска веб-приложения.

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

Когда я пытаюсь очистить этот файл, происходит что-то интересное - 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 МБ, и мой дисковый обмен почти не используется. Я не вижу ни одного временного файла такого огромного размера.

1 Ответ

2 голосов
/ 08 января 2010

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

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

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

...