Не удается изменить формат файла журнала в GlassFish 3.1.2.2
Я пытался настроить ведение журнала для моего приложения, которое развернуто на GlassFish 3.1.2.2. Во-первых, я прочитал несколько уроков, как настроить SLF4J и применить его к моему приложению и GF. Я нашел тот, который был очень полезен, потому что регистрация начала работать. Однако способ хранения журналов Glassfish меня очень раздражает. Я нашел несколько ответов ( эта публикация казалась удовлетворительной), но, к сожалению, я столкнулся с проблемой, которую не могу решить. Я написал свой собственный модуль форматирования и поместил его в Glassfish, как в посте выше, и он работает, но только частично. Когда я вижу журналы в консоли NetBeans, они выглядят так, как я хотел бы, чтобы они выглядели:
INFO: 2014-03-30 20:48:51,768 INFO p.e.a.w.kino.rk.rest.SessionService - User (admin) has successfully logged out
Однако в файле server.log они по-прежнему имеют формат GlassFish.
[#|2014-03-30 20:48:51.769|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=93;_ThreadName=Thread-2;|2014-03-30 20:48:51,768 INFO p.e.a.w.kino.rk.rest.SessionService - User (admin) has successfully logged out.
|#]
Я создал два файла со свойствами ведения журнала, как было предложено в первой ссылке, поэтому я прикрепляю эти два файла:_logging.properties
handlers = org.slf4j.bridge.SLF4JBridgeHandler
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=false
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000
com.sun.enterprise.server.logging.GFFileHandler.alarms=false
com.sun.enterprise.server.logging.GFFileHandler.formatter=pl.edu.amu.wmi.kino.rk.utils.ReportKeeperLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0
com.sun.enterprise.server.logging.GFFileHandler.level=ALL
java.util.logging.FileHandler.formatter=pl.edu.amu.wmi.kino.rk.utils.ReportKeeperLogFormatter
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${com.sun.aas.instanceRoot}/logs/server.log</file>
<encoder>
<pattern>%date %level [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<logger name="com.sido">
<level value="debug" />
</logger>
<logger name="org.springframework">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="console" />
</root>
</configuration>
На каком-то другом сайте я нашел эту вещь с другим appender в logback.xml, но это не сработало.
ОБНОВЛЕНИЕ Я изменил файл в приложении "ФАЙЛ" в logback.xml на какой-то другой файл, т.е. temp_server.log, и файл был создан, но к нему ничего не добавлено.
Не могли бы вы сказать мне, что я пропускаю или делаю неправильно?
1 ответ
Я нашел решение сегодня. Я не читал точно, как бороться с файловыми апдендерами. Теперь все в порядке, поэтому я выложу свое решение - изменил logback.xml. Теперь он поддерживает File Rolling Policy и сохраняет журналы так, как я хотел.
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${com.sun.aas.instanceRoot}/logs/rk_log.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${com.sun.aas.instanceRoot}/logs/rk_log_%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%date{YYYY-MM-dd HH:mm:ss} %-5level %logger{35} - %msg%n</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
<logger name="com.sido">
<level value="debug" />
</logger>
<logger name="org.springframework">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="console" />
</root>
</configuration>