Log4j динамический параметр - PullRequest
0 голосов
/ 23 марта 2010

У меня есть веб-приложение j2ee, работающее на платформе Spring и использующее log4j для ведения журнала.У меня есть эта строка в моем файле log4j.properties.это вставит журналы в мою базу данных.Как установить динамическое значение в части сообщения, чтобы я мог каким-то образом добавить текущего пользователя, вошедшего в систему.Объект bean, содержащий информацию для текущего пользователя, находится в контексте приложения.

log4j.appender.dbLog.sql = INSERT INTO LOGGING (log_date, log_level, location, message) VALUES ('% d {гггг / мм / дд чч: мм: сс} ','% -5p ','% C-% L ','% m ')

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Вы хотите использовать MDC (сопоставленный диагностический контекст).Вот ссылка об использовании его с сервлетами.

1 голос
/ 23 марта 2010

Я не совсем уверен в «контексте приложения» в сравнении с расположением моей «информации о пользователе», но мое веб-приложение использовало Struts и log4j, и у меня было похожее (но, возможно, более простое) требование, я решил его с помощью кода как это:

public class LogoutAction extends org.apache.struts.action.Action {

private Log log_db = LogFactory.getLog("mysql");

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    log_db.debug("User: "+request.getRemoteUser()+" logged off");
    request.getSession().invalidate();
    your
}

}

А затем в моем файле свойств log4j была такая запись:

log4j.logger.mysql=DEBUG, mysql
log4j.appender.mysql=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.mysql.layout=org.apache.log4j.PatternLayout
log4j.appender.mysql.URL=jdbc:mysql://localhost:3306/dbname?autoReconnect=true
log4j.appender.mysql.driver=com.mysql.jdbc.Driver
log4j.appender.mysql.user=user
log4j.appender.mysql.password=password
log4j.appender.mysql.sql=INSERT INTO log (Date, Logger, Priority, Message) VALUES ("%d","%c","%p","%m")
enter code here

И в результате моя строка в моей таблице будет иметь такие данные:

'2010-03-15 21: 49: 46,514', 'mysql', 'DEBUG', 'Пользователь: Бен вышел из системы'

Надеюсь, это поможет

...