Как поделиться общим файлом журнала среди нескольких потоков в Java - PullRequest
0 голосов
/ 09 октября 2019

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

Является ли хорошей идеей сначала создавать дампы в Deque, например одновременный сбор, а затем периодически сбрасывать данные из deque в файл журнала.

Пожалуйста, поделитесь любыми примерами / указателями для лучшей производительности.

1 Ответ

0 голосов
/ 09 октября 2019

Предполагая, что по потокам вы имеете в виду приложения / программы, работающие либо на одном компьютере, либо в распределенной среде, а не несколько потоков в одном приложении.

Тогда ...

  • Если вы используете Log4J в качестве каркаса журналирования, вы можете реализовать регистрацию через SocketAppender (см. Log4J appenders ). Тогда ваши различные приложения могут подключаться к отдельной службе «ведения журналов», которую вы написали, чтобы объединить все журналы в один файл.

  • Другая альтернатива - регистрация всех ваших приложений в качестве производителей. в определенной очереди (что-то вроде RabbitMQ), где строки журналов публикуются в виде сообщений. Затем вы снова можете иметь отдельного потребителя, который потребляет сообщения и записывает их в ваш журнал.

...