使用slf4j(和log4j)传递日志事件特定数据

时间:2014-03-10 12:38:52

标签: java logging slf4j mdc

有没有办法通过slf4j传递适用于当前日志事件的更多信息?可以通过MDC存储和访问基于请求的信息,如用户,IP地址或应用程序名称。稍后我可以在布局或转换器中访问该信息,而不必解析日志消息。如果我使用基于JSON的格式,我有另一个字段"appName":myApp,如果我在plaint文本中使用log4j登录,我可以通过%{appName}表示法访问它。 有没有办法通过适用于一个日志事件的信息来实现这一目标?例如,我想传递一个异常ID(即使是我不拥有的异常)。最好但仍然难看的解决方案是将id传递给MDC,记录异常并在之后删除它。 有谁知道更好的解决方案?

1 个答案:

答案 0 :(得分:6)

如果您不需要使用slf4j并且log4j足够好 - 您可以使用log4j的自定义消息:https://logging.apache.org/log4j/2.x/manual/messages.html

如果你想要slf4j - 你可以实现自己的Logger适配器,它可以适当地处理任何额外的参数(就像http://www.slf4j.org/xref/org/slf4j/impl/JDK14LoggerAdapter.html