我有一个log4j记录器,我实例化如下:
logger = Logger.getLogger("EQUIP(" + id + ")");
这样做,当我调用logger.info("message")
时,我应该得到这样的输出(带有一些日期格式):
13/11/12 15:08:27 INFO: EQUIP(1): message
但我只是得到了:
13/11/12 15:08:27 INFO: message
我还将logger.getName()
打印到控制台进行调试,它会返回正确的“EQUIP(1)”名称。在某些情况下,我的程序中会出现这种情况,我有几个这样的记录器,但主要是在这个特定的类中。我想知道我做错了什么,如果这个名字应该只是类/包名,或者它可以是什么(它在80%以上的记录器中运行良好)。我需要打印每个设备的ID,因为我有几个同时工作,并且在没有这个的情况下跟踪它们几乎是不可能的。
我应该如何解决这个问题,最好不要将资源更改为包含此前缀的所有日志调用?
答案 0 :(得分:3)
输出格式取决于您为appender配置的模式。如果模式字符串包含%c
,那么您将获得记录器名称,如果它没有,那么您就不会。
另一种方法可能是使用mapped diagnostic context,它旨在消除写入同一记录器的不同线程的日志输出之间的歧义。