使用更多信息扩展log4j错误电子邮件

时间:2013-03-18 06:48:57

标签: java logging log4j

我正在使用的Web应用程序为用户的数据完整性问题提供了更多日志。我想获得更多信息,如:

  • 服务器名
  • client ip
  • 浏览器信息

有没有办法让log4j能够记录上面的参数?换句话说,我想将这些参数与其他参数一起添加。那么log4j为此提供了一些方法吗?

我有log4j.properties:

log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n

log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n

log4j.rootLogger=INFO,Stdout

log4j.logger.org.apache.wicket=INFO
log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
log4j.logger.org.apache.wicket.version=INFO
log4j.logger.org.apache.wicket.RequestCycle=INFO

我有一个LogUtil.java课程,我在其中记录了可用的信息。

修改 更清楚我的问题是什么:

在哪里可以找到这些参数以及如何在现有记录器中添加它们?

3 个答案:

答案 0 :(得分:3)

这些信息可以从HttpServletRequest对象获取。 您可以使用MDC来完成此任务。

Log4j MDC (Mapped Diagnostic Context) Tutorial

您还可以通过扩展SMTPAppender

自定义Log4j电子邮件中发送的详细信息

查看此博客,这应该会为您提供如何

Customize SMTPAppender

答案 1 :(得分:3)

了解MDC。

在实际开始处理之前,您应该使用您提到的信息设置MDC。然后,您可以在日志消息中包含此类信息。

答案 2 :(得分:1)

检查HttpServletRequest类api,它提供了您需要的大部分信息。通过请求标题可以获得大量信息。

无论您在使用java代码进行登录,都可以使用上述值创建日志字符串。

另一个选项是使用MDC,如果你设置了东西,那么它将被自动记录。