Я пытаюсь сказать своему jboss написать журнал доступа со всей необходимой мне информацией и использовать ежедневную ротацию журнала. Пока это не вопрос. Конечная цель — отправить все записи журнала доступа в стек elk с помощью пересылки logstash. Тоже не такое уж большое дело. Проблема, с которой я сталкиваюсь сейчас, заключается в том, чтобы определить имена журналов доступа.
JBoss предлагает ротацию журналов по умолчанию, но добавляет метку времени к каждому файлу журнала, поэтому сегодняшний файл также имеет суффикс метки времени.
Я хочу добиться такого же поведения, как у tomcat или jbosses server.log. Это означает, что сегодняшний файл должен называться просто access.log и иметь суффикс только тогда, когда сегодняшний файл становится вчерашним файлом и, следовательно, переводится в неактивное состояние.
моя конфигурация jboss выглядит так:
<subsystem xmlns="urn:jboss:domain:logging:1.3">
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<periodic-rotating-file-handler name="ACCESS" autoflush="true">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="access.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="jacorb">
<level name="WARN"/>
</logger>
<logger category="jacorb.config">
<level name="ERROR"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="FILE"/>
<handler name="ACCESS"/>
</handlers>
</root-logger>
</subsystem>
И вот моя конфигурация журнала доступа с включенной ротацией журнала (имеет вышеупомянутое поведение временной метки). Когда я устанавливаю rotate="false", я получаю access.log, который не имеет рейтинга.
<subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
<access-log pattern=""%{HOST}i" - %h %t "%m" "%U" - "%q" - "%H" - %s %B "%{User-Agent}i" %T %D "%p"" prefix="access.log" rotate="true">
<directory path="."/>
</access-log>
</virtual-server>
</subsystem>
Прямо сейчас я вижу два способа отправки лог-файлов в мой стек elk. Во-первых, запись в access.log без временной метки и добавление временной метки при чередовании, чтобы программа пересылки logstash всегда могла прочитать access.log. Во-вторых, настроить конфигурацию серверов пересылки, чтобы всегда проверять новейший файл access.log. Таким образом, имя файла с отметкой времени не будет проблемой. Но я не знаю, возможно ли это.
Буду благодарен за любой совет. Спасибо и привет. Себастьян