У нас есть простое веб-приложение, работающее на двух экземплярах Tomcat за Apache (установка Tomcat HA с использованием mod_proxy_balancer
и mod_proxy_ajp
). Роль веб-приложения заключается в записи данных входящего запроса в файл журнала.
Учитывая, что каждый экземпляр tomcat работает в своей собственной JVM, как нам реализовать запись в файл журнала?
Было бы замечательно, если бы оба экземпляра могли записывать в один и тот же файл, но казалось бы, что Log4J не поддерживает это. Мы открыты для написания нашего собственного средства записи файлов, но я не уверен, что java.nio.channels.FileLock
будет делать то, что мы хотим.
Внизу находится Debian с файловой системой ext3, поэтому, если бы мы делали это на C или даже на PHP, мы бы использовали блокировки файловой системы. Однако Java была написана, чтобы абстрагироваться от базовой системы, и превратилась в беспорядок классов в нескольких пакетах, которые утверждают, что могут записывать файлы тем или иным способом. У кого-нибудь есть совет? Есть ли какие-нибудь пакеты, которые могли бы нам помочь?
Это просто глупая мечта - сначала написать один и тот же файл с 2 JVM? Конечно, я не первый.
Другое требование заключается в том, что эти файлы должны катиться каждый час, но это не такая большая проблема (за исключением, может быть, во время создания файла).
Спасибо!