Log4j внезапно прекращает регистрироваться

Я, создают приложение Портлета, развернутое к Серверу Портала WebSphere, работающему на Linux. Каждая ВОЙНА Портлета использует Log4j для регистрации с конфигурацией как это, имея каждую ВОЙНУ два Файла журнала:

log4j.logger.im.the.package=DEBUG, InfoAppender, DebugAppender

log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.Threshold=INFO
log4j.appender.InfoAppender.File=/tmp/infoWARName.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=/tmp/debugWARName.log
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d %p [%c] - %m%n

После развертывания все работает как очарование, и файлы журнала начали заполняться. После нескольких часов, и в то же время, Регистрирующиеся остановки и info.log и debug.log не обновляются вообще. Мы должны повторно развернуть ВОЙНУ Портлета в сервере, чтобы получить регистрацию, начинающуюся снова.

Какие-либо идеи?

Обновление:

Я начинаю подозревать, что это имеет отношение к моим БАНКАМ Регистрации. В настоящее время это - внутренняя часть БАНКИ мой WEB-INF/lib папка:

com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.slf4j.api-1.5.6.jar
slf4j-log4j12-1.5.6.jar

Второе Обновление:

В часы до щедрости, чтобы закончиться, это - то, как Log4j формируется в каждом Применении Портлета. Вот web.xml :


    log4jConfigLocation
    classpath:miAppLog4j.properties


    org.springframework.web.util.Log4jConfigListener

И miAppLog4j.properties файл расположен в папке, внешней к ВОЙНЕ и на Портал. Мы сделали его availbale в Пути к классу Портлета через a Общая библиотека в портале WebSphere.

14
Имейте вас, проверил, что есть достаточно пространства для, загружается / tmp ?
добавлено автор tcb, источник
Если один из A' s был хорош для вас, вы могли принять его? Q все еще открыт.
добавлено автор Glen Best, источник
Все портлеты прекращают регистрироваться в то же время? То время соответствует, когда вращение происходит?
добавлено автор dbreaux, источник
Это, которое appender катит на основе размера файла (я думаю дефолт 10 МБ), таким образом, I' m, просто спросив, если регистрирующиеся остановки, когда файл становится достаточно большим, который log4j решает перевернуть к следующему файлу.
добавлено автор dbreaux, источник
Вы проверили SystemOut.log?
добавлено автор keuleJ, источник
Я проверил и there' s много пространства в жестком диске: используются Только 4%
добавлено автор Carlos Gavidia, источник
Ничто в SystemOut.log, в SystemErr.log есть некоторые предупреждения некоторых пропавших без вести appenders связаны с другими Библиотеками (как, Зимуют). Это может быть причиной?
добавлено автор Carlos Gavidia, источник
Информация/отладка appenders для одной ВОЙНЫ останавливается в то же время; но весь WAR' s прекращают регистрироваться в различное время. Как делают я знаю what' s мое повторяющееся время?
добавлено автор Carlos Gavidia, источник
Я вижу файлы 203 КБ, который внезапно прекращает регистрироваться, таким образом, я думаю не связанный с размером
добавлено автор Carlos Gavidia, источник
Проблема была решена, но ответ не ниже: S
добавлено автор Carlos Gavidia, источник
В нашем случае у нас было оказание гостеприимства с третьей компанией, и они добавляли сценарий что gzipped наши регистрации (мы didn' t знают), и формат, который они раньше знали, могла ли бы регистрация быть сжата, отличалось от формата, который мы использовали (мы didn' t знают нас couldn' t изменяют его), и таким образом, они сжимали их каждый день.
добавлено автор Alfergon, источник

5 ответы

Вы предоставили некоторую основную информацию, таким образом, я могу только делать набросок некоторых причин кандидата и вероятности:

1. Проблема с файлом locks/handles/IO поток

  • Triggerred by log rolling?

    Negative in your case. Your two separate log files (info and debug) stop at the same time for any given WAR. Each file rolls at the default maximum size (10MB). It's very unlikely that both logs would always roll at the same time. The error must not be triggered by log rolling. Extra confirmation by configuring log4j.appender.InfoAppender.MaxFileSize=200MB

  • Triggerred by users manipulating Linux files?

    Negative in your case. It's possible that user/sysadmin manipulating files could create locks or stale file handles. Linux should never have problems with a user tail-ing a file (but windows does). Linux can have problems with users zipping or editing files. But your problem seems very repeatable, making this unlikely unless you have automated scripts manipulating log files.

  • Triggerred by "competitive" config settings in Websphere or Spring, with duplicate use of same log files by server/framework?

    Seems unlikely in your case. Seems you haven't been setting Websphere commons logging configuration. Commons logging is automatically included in the websphere server parent ClassLoader and can be configured to "wrap" to Log4J by configuring:

    File commons-logging.properties

    # Set application classloader mode as PARENT_LAST when deploying in WAS as .ear
    priority=1
    org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
    
  • Triggered by hardware problems/disk failure?

    ??? Seems strange that such a problem would be very repeatable.

2. Проблема с явскими нитями?

  • thread death or deadlock
  • massive thread processing/contention in "other" code, so that code with logging is not run

    From your description, I assume that the application is still running and working fine with normal performance and functionality, but the logs are not written. Can you confirm? If so, then it's not a thread problem with the webapp threads.

    Also I can confirm that it isn't a thread problem within the Log4J logic, because the only time it creates/uses its own thread is when one of AsynchAppender/ExternallyRolledFileAppender/SocketAppender/TelnetAppender is used OR when PropertyConfigurator.configureAndWatch or DOMConfigurator.configureAndWatch method is called.

    i.e. Negative.

3. Изменения классов Log4J в ClassLoaders, с использованием различной конфигурации?

  • Parent ClassLoader clashes with Webapp ClassLoader

    E.g. Your webapps initially start with thier own configured classes from WEBINF directory and all is good, but later after some time a different app causes (or one of the portal server admin tools) causes a clashing class to be loaded into the parent ClassLoader and your app "picks up" this new illegal version of the class and fails.

    Quite possibly a problem - thousands of users on Google have struggled with Websphere class loaders.

Предложенное действие:

  • ensure all your web apps use PARENT_LAST ClassLoading - go to the Admin console and ensure that they have PARENT_LAST set within ALL WebApp configurations

  • ensure you are getting Log4J internal error messages written to the console E.g. Deliberately test by forceably deleting the error log as admin while app is running, creating a stale handle. If "Log4J:" error messages do not appear in console, then this is a serious problem.
    Next time the problem occurs, trap any such console messages and report them. Also, you can set "-D log4j.debug" on JVM/websphere startup, to find out precisly what Log4J was doing before/during the problem - messages will go to console.

  • do you really need to set the logging level to DEBUG for all of your packages & classes? Better to set to INFO or WARN and only selectively set on when you are debugging specific problems?

Это - много текста.......... B^)

22
добавлено
Я добавил некоторые дополнительные детали, возможно они могли помочь
добавлено автор Carlos Gavidia, источник

Больше 5 лет у Log4j есть едва любые исправленные ошибки: это - эффективно мертвый проект. Если приемлемый, считают замену его с Logback , который осуществляет SLF4j непосредственно.

Logback и SLF4J написаны тем же самым парнем, который написал Log4J (Ceki), имеет еще более либеральную лицензию и имеет хорошее сообщество. Это - преемник Log4J 1 каждым возможным способом (за исключением его имени).

5
добавлено

Я думаю, что проблема состоит в том, что у вас есть многократные ВОЙНЫ, пишущие тому же самому файлу журнала. В нашем опыте log4j не может сделать этого достоверно, особенно с вращением appenders. Когда каждый идет, чтобы катить его, другие смущены и неспособны зарегистрироваться далее. Или продолжите регистрироваться к старому файлу.

Я подозреваю, что вы оказываетесь перед необходимостью иметь каждую ВОЕННУЮ регистрацию к различному файлу.

3
добавлено
У каждой ВОЙНЫ есть it' s владеют конфигурацией Log4j с ее исключительными Файлами журнала. Я сделал, некоторые редактируют к оригинальному вопросу сделать это более ясным.
добавлено автор Carlos Gavidia, источник

Я не уверен, почему log4j останавливается в вашем заявлении. Но вы могли (должен) модернизировать до log4j 2.0. Переключение не должно быть большим усилием. Необходимо будет переписать log4j.properties файл к XML-файлу, потому что новая версия не поддерживает имущественный файл больше.

В Явском Magazin в статье говорилось, что log4j 2.0 ведет себя более прочный в многопоточной окружающей среде, таким образом, есть шанс, это устранит вашу проблему. Если это не делает вас, все еще обладают преимуществом новой версии.

Это приносит некоторые хорошие особенности и улучшения (скопированный с log4j место):

Разделение API

API для Log4j отдельный от внедрения, проясняющего для разработчиков приложений, какие классы и методы они могут использовать, гарантируя прямую совместимость. Это позволяет команде Log4j улучшать внедрение безопасно и совместимым способом.

Улучшенная Работа

Log4j 2 выступает быстрее, чем Log4j 1.x в критических областях и так же к Logback при большинстве обстоятельств. Посмотрите Работу для получения дополнительной информации. Поддержка многократной ПЧЕЛЫ В то время как Log4j 2 API обеспечит лучшую работу, Log4j 2 оказывает поддержку для SLF4J и палаты общин, Регистрирующей ПЧЕЛУ.

Автоматическая Перезагрузка Конфигураций

Как Logback, Log4j 2 может автоматически перезагрузить свою конфигурацию после модификации. В отличие от Logback, это сделает так, не проигрывая события регистрации, в то время как реконфигурация происходит.

Передовая Фильтрация

Как Logback, фильтрация поддержек Log4j 2 на основе данных о контексте, маркеров, регулярных выражений и других компонентов в событии Регистрации. Фильтрация может быть определена, чтобы относиться ко всем событиям прежде чем быть переданным Лесорубам или поскольку они проходят через Appenders. Кроме того, фильтры могут также быть связаны с Лесорубами. В отличие от Logback, можно использовать общий класс Фильтра при любом из этих обстоятельств.

Вставная Архитектура

Log4j использует вставной образец, чтобы формировать компоненты. По сути, вы не должны писать код, чтобы создать и формировать Appender, Расположение, Конвертер Образца, и так далее. Log4j автоматически признает плагины и использует их, когда конфигурация ссылается на них.

Имущественная Поддержка

Можно сослаться на свойства в конфигурации, Log4j непосредственно заменит их, или Log4j передаст их к основному компоненту, который динамично решит их. Свойства прибывают из ценностей, определенных в конфигурационном файле, системных свойствах, переменных окружения, Карте ThreadContext и подарке данных в конечном счете. Пользователи могут далее настроить имущественных поставщиков, добавив их собственный Плагин Поиска.

3
добавлено

Я попытался бы переместить местоположение файла журнала куда-нибудь кроме временной файловой системы.

0
добавлено
I' m предполагающий, что OS может пытаться удалить файл, который это должно быть свободно сделать, с тех пор it' s в/tmp. I' ve видят, что Log4j прекращает писать полностью, если файл журнала становится неперезаписываемым в течение даже нескольких секунд - он won' t начинают писать снова, когда это становится перезаписываемым.
добавлено автор GreyBeardedGeek, источник
I' попытка ll это. Какая-либо причина сделать это? Или какая-либо известная проблема?
добавлено автор Carlos Gavidia, источник
Перемещенный файлы журнала в / домой и проблему все еще там. Хотя, log4j файл конфигурации находится все еще в/tmp
добавлено автор Carlos Gavidia, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async