Java Log4j未在消息前打印名称

Java Log4j未在消息前打印名称,java,logging,log4j,Java,Logging,Log4j,我有一个log4j记录器,我将其实例化如下: logger=logger.getLogger(“装备”(“+id+”) 这样,当我调用logger.info(“message”)时,我应该会得到如下输出(带有一些日期格式): 13/11/12 15:08:27信息:装备(1):信息 但我只得到: 13/11/12 15:08:27信息:消息 我还将logger.getName()打印到控制台进行调试,它会返回正确的“设备(1)”名称。在我的程序中,这种行为在某些情况下会发生,我有几个这样的记录器

我有一个log4j记录器,我将其实例化如下:

logger=logger.getLogger(“装备”(“+id+”)

这样,当我调用
logger.info(“message”)
时,我应该会得到如下输出(带有一些日期格式):

13/11/12 15:08:27信息:装备(1):信息

但我只得到:

13/11/12 15:08:27信息:消息

我还将
logger.getName()
打印到控制台进行调试,它会返回正确的“设备(1)”名称。在我的程序中,这种行为在某些情况下会发生,我有几个这样的记录器,但大多数都是在这个特定的类中。我想知道我是否做错了什么,这个名称是否应该只是类/包的名称,或者它是否可以是任何名称(它在我80%以上的记录器中运行良好)。我需要打印每个设备的ID,因为我有几个设备同时工作,如果没有这些设备,跟踪它们几乎是不可能的


我应该如何解决这个问题,最好不要更改所有日志调用以包含此前缀?

输出格式取决于您为appender配置的模式。如果模式字符串包含
%c
,则会包含记录器名称,如果不包含,则不会


另一种方法可能是使用,该方法旨在消除不同线程向同一记录器写入的日志输出之间的歧义。

我认为
getLogger
使用记录器名称而不是前缀。是的,我知道,我在这里尝试使用前缀作为记录器名称,因为它是否被重用并不重要