记录具有不同数据类型的消息

时间:2015-10-05 13:30:43

标签: java logging

我正在使用java.util.logging为我的应用程序创建日志文件。到目前为止,这非常有效 现在我遇到的问题是info()方法只需要一个字符串作为参数。但我有不同的数据类型要记录,f.e。整数,双精度,自定义对象。 我知道我可以自己构建字符串,我使用String.format等。 我也知道我可以使用log()方法。但是在这里我必须每次都设置日志级别并创建一个Object数组。

我正在寻找的是我可以设置全局日志级别(一次),然后调用这样的方法:

log.info(String message, Object... values);

是否有支持该框架的框架?

2 个答案:

答案 0 :(得分:2)

看一下SLF4j/logback,你可以写一些像

这样的东西
LOGGER.info("log output var1={} var2={}",var1,var2);

在日志消息中,{}将被参数替换:

15:41:28.551 [main] INFO d.h.s.Main - log output var1=abc var2=123.45

答案 1 :(得分:2)

是的,它被称为slf4j,您正在寻找的特定API就是这个 org.slf4j.Logger#info(java.lang.String, java.lang.Object...)

  

这种形式避免了记录器时多余的字符串连接      已针对INFO级别禁用。但是,这种变体会导致隐藏      (和相对较小的)在调用方法之前创建Object[]的成本,      即使为INFO禁用了此记录器。采取的变种      {@link #info(String,Object)一个}和{@link #info(String,Object,Object)两个}      论证的存在只是为了避免这种隐藏的代价。

您应该查看slf4j文档页面中的jcl-over-slf4j.jar

  

我们通过SLF4J实现的JCL将允许您逐步迁移到SLF4J,特别是如果您的软件所依赖的某些库在可预见的将来继续使用JCL。您可以立即享受SLF4J可靠性带来的好处,同时保持向后兼容性。只需用jcl-over-slf4j.jar

替换commons-logging.jar