3

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

  • 服务器名称
  • 客户端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堂课,我在其中记录可用信息。

编辑: 为了更清楚我的问题是什么:

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

4

3 回答 3

3

看看MDC。

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

于 2013-03-18T07:11:35.060 回答
3

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

Log4j MDC(映射诊断上下文)教程

您还可以通过扩展SMTPAppender自定义 Log4j 电子邮件中发送的详细信息

检查这个博客,这应该给你如何

自定义 SMTPAppender

于 2013-03-18T07:08:55.003 回答
1

检查 HttpServletRequest 类 api,它提供了您需要的大部分信息。大量信息将通过请求标头提供。

无论您在哪里登录 java 代码,都可以使用上述值创建一个日志记录字符串。

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

于 2013-03-18T07:13:09.643 回答