Как сделать так, чтобы несколько экземпляров программы Java совместно использовали один и тот же файл регистрации FileHandler? - PullRequest
1 голос
/ 17 мая 2011

У меня есть Java-программа, которая работает как 3 отдельных процесса на одном сервере.Я хотел бы, чтобы все процессы совместно использовали один файл журнала, есть ли способ указать это в файле logging.properties?Я использую java.util.logging для обработки журналов.

В настоящее время я определяю свой FileHandler в моем файле logging.properties:

java.util.logging.FileHandler.pattern =% h / log / logfile.log

Это прекрасно работает для 1 экземпляра программы, однако, если я попытаюсь запустить 3 отдельных экземпляра программы, результат будет:

logfile.loglogfile.log.1 logfile.log.2

Любой совет по этому поводу?

Спасибо

Ответы [ 4 ]

3 голосов
/ 17 мая 2011

Logback - это еще один регистратор, но он поддерживает ваш случай.

из документов: http://logback.qos.ch/manual/appenders.html

проверить разумный режим для FileAppender

0 голосов
/ 17 мая 2011

Я бы написал 2-ую программу на Java - регистратор. Пусть другие процессы отправят сообщения журнала программе регистрации, которая затем запишет в один файл журнала. Вы можете общаться между программами, используя сокеты. Вот пример того, как это сделать.

Пол

0 голосов
/ 17 мая 2011

Разработка Ответ Пола, Вы можете использовать SocketHandler , чтобы направлять события журнала из всех процессов в один процесс, который фактически записывает в файл.

Большинство пакетов журналов обеспечивают простую реализацию этой функциональности.Другим широко поддерживаемым вариантом является интеграция с системой ведения журнала системы (журнал событий Windows или syslogd).

0 голосов
/ 17 мая 2011

Запись в один и тот же файл из разных процессов (разных JVM) не рекомендуется.

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

...