log4j добавить журналы в разных файлах на основе вошедшего в систему пользователя приложения - PullRequest
0 голосов
/ 07 января 2019

Я использую log4j.1.2.16 для входа в приложение Java, размещенное в tomcat. Ниже приведен мой log4j.properties

##DEBUG < INFO < WARN < ERROR < FATAL
#### Use two appenders, one to log to console, another to log to a file
log4j.rootCategory=DEBUG, R

#### Appender writes to a file
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${APP_HOME}/runtime/log/em.log

# Control the maximum log file size
log4j.appender.R.MaxFileSize=100MB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=20

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %c{1} %m%n

log4j.logger.com.mchange=WARN
log4j.logger.com.amazonaws=WARN
log4j.logger.org.hibernate=ERROR
log4j.logger.org.apache.commons.beanutils=WARN
log4j.logger.org.apache.commons.httpclient=WARN
log4j.logger.org.elasticsearch=WARN
log4j.category.velocity=WARN
log4j.com.amazonaws.services.s3=WARN
log4j.org.apache.http.impl.conn.Wire=WARN
log4j.logger.httpclient.wire.header=WARN
log4j.logger.httpclient.wire.content=WARN

Я хочу поддерживать разные файлы журнала для разных пользователей (одного и того же приложения). Например, если user1 входит в мое приложение, я хочу, чтобы журналы входили в файл user1.log. Я буду иметь вход в пользовательскую информацию в объекте сеанса и локальную переменную статического потока. Как мне этого добиться?

1 Ответ

0 голосов
/ 07 января 2019

Вот несколько способов добиться этого.

  1. Вы можете использовать RoutingAppender для достижения этой цели.
  2. Настройте ведение журнала программно, как упомянуто здесь .
  3. Если вы можете перейти на Logback, вы можете думать о MDC с SiftingAppender .

Примечание. Многие из этих решений требуют, чтобы вы установили UserId в общем контексте, таком как MDC или ThreadContext, поэтому обязательно удалите его после обработки запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...