Файл производственных настроек для log4j?

Вот мой текущий файл настроек log4j. Являются ли эти настройки идеальными для производственного использования, или я должен что-то удалить / настроить или изменить? Я спрашиваю, потому что все мои потоки зависали из-за блокировки log4j. Я проверил свои дескрипторы открытых файлов, которые я использовал только 113.

# ***** Set root logger level to WARN and its two appenders to stdout and R.
log4j.rootLogger=warn, stdout, R

# ***** stdout is set to be a ConsoleAppender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# ***** stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# ***** Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# ***** R is set to be a RollingFileAppender.
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/myapp.log
# ***** Max file size is set to 100KB
log4j.appender.R.MaxFileSize=102400KB
# ***** Keep one backup file
log4j.appender.R.MaxBackupIndex=5
# ***** R uses PatternLayout.
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %d %c - %m%n


#set httpclient debug levels
log4j.logger.org.apache.component=ERROR,stdout 
log4j.logger.httpclient.wire=ERROR,stdout 
log4j.logger.org.apache.commons.httpclient=ERROR,stdout 
log4j.logger.org.apache.http.client.protocol=ERROR,stdout

ОБНОВЛЕНИЕ *** Добавление образца дампа потока из всех моих потоков (100)

"pool-1-thread-5" - Thread t@25
   java.lang.Thread.State: BLOCKED on org.apache.log4j.spi.RootLogger@1d45a585 owned by: pool-1-thread-35
    at org.apache.log4j.Category.callAppenders(Category.java:201)
    at org.apache.log4j.Category.forcedLog(Category.java:388)
    at org.apache.log4j.Category.error(Category.java:302)
15
задан James 21 August 2010 в 18:22
поделиться

3 ответа

% F:% L серьезно влияет на производительность. Хотя я не понимаю, как они вызывают блокировку, я бы подумал об их исключении для производства.

1
ответ дан 1 December 2019 в 01:30
поделиться

Это выглядит нормально. Я не понимаю, как только это может вызвать блокировку log4j. Может быть, вы могли бы опубликовать дамп потока с вашей проблемой?

0
ответ дан 1 December 2019 в 01:30
поделиться

Вы создаете Logger для каждого класса, используя стандартный private static final Logger logger = Logger.getLogger(Foo.class); где Foo — это класс, в котором объявлен регистратор? Если у вас есть только 1 экземпляр Logger во всем приложении, могут возникнуть конфликты, если будет много логов.

2
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: