2013-02-11 5 views
1

У меня есть два контекста, работающих в одном экземпляре JVM и Tomcat, и я хотел бы записать в тот же файл журнала, используя журнал RollingFileAppender. Является ли синхронизация журнала RollingFileAppender для предотвращения любых проблем, если я использую один и тот же файл? Я обеспокоен тем, что перекаты файлов будут работать некорректно, а некоторые журналы будут отменены.Несколько RollingFileAppenders, записывающих в тот же файл

Документ регистрации mention a prudent mode, но это указывает на поражение производительности и относится только к протоколированию в один и тот же файл из разных JVM. Я буду работать в одной JVM.

Вот пример моего logback.xml. Я хотел бы иметь это в двух отдельных файлах WAR для каждого контекста:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${catalina.base}/logs/portal.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
    <fileNamePattern>portal.%d.log</fileNamePattern> 
    <maxHistory>30</maxHistory> 
    </rollingPolicy> 
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>100MB</maxFileSize> 
     </triggeringPolicy> 
     <encoder> 
     <pattern>%d [%t] %-5p %c - %m%n</pattern> 
     </encoder> 
    </appender> 

    <root level="INFO"> 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

ответ

1

Глядя на источник показывает, что метод doAppend() синхронизируется. Комментарий в методе rollover() говорит, что ему не нужно синхронизироваться, поскольку doAppend() есть.

http://grepcode.com/file/repo1.maven.org/maven2/ch.qos.logback/logback-core/0.9.3/ch/qos/logback/core/AppenderBase.java#AppenderBase.doAppend%28java.lang.Object%29

http://grepcode.com/file/repo1.maven.org/maven2/ch.qos.logback/logback-core/0.9.3/ch/qos/logback/core/AppenderBase.java#AppenderBase.doAppend%28java.lang.Object%29

Вы можете все еще столкнуться с проблемами, хотя.

+0

Это правда. Мне интересно, использовал ли кто-то RollingFileAppender таким образом, или если он где-то задокументирован, что я, возможно, просто не видел. – acvcu

0

Я использую RollingFileAppender таким образом и сталкиваюсь с теми же проблемами, что и вы. Кажется, что это работает, если вы удалите элемент <file> из своей конфигурации. Но тогда все файлы называются, например. portal.2013-12-03.log и так далее. Если вы можете жить с этим, вы идете.

Тем не менее, для активного журнала мне нужно постоянное имя файла, например portal.log, потому что в этих файлах журнала есть некоторый мониторинг. Но я еще не понял, как это возможно. Я думаю, что Windows вызывает некоторые проблемы здесь, тоже ...

Смежные вопросы