Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包括SLF4J格式的实例特定数据(例如toString()的结果)_Java_Logging_Slf4j - Fatal编程技术网

Java 包括SLF4J格式的实例特定数据(例如toString()的结果)

Java 包括SLF4J格式的实例特定数据(例如toString()的结果),java,logging,slf4j,Java,Logging,Slf4j,我有很多方法调用,如下所示: log.info("{}: Initiated", this); log.info("Initiated"); 我宁愿他们看起来像这样: log.info("{}: Initiated", this); log.info("Initiated"); 同时仍然让我知道哪个实例记录了事件,而不仅仅是类。如果我创建便利方法,我会丢失位置信息,即日志显示调用方法是便利方法,而不是调用它的方法 我考虑过扩展LoggerWrapper,但我仍然必须覆盖许多方法,对于这样

我有很多方法调用,如下所示:

log.info("{}: Initiated", this);
log.info("Initiated");
我宁愿他们看起来像这样:

log.info("{}: Initiated", this);
log.info("Initiated");
同时仍然让我知道哪个实例记录了事件,而不仅仅是类。如果我创建便利方法,我会丢失位置信息,即日志显示调用方法是便利方法,而不是调用它的方法

我考虑过扩展
LoggerWrapper
,但我仍然必须覆盖许多方法,对于这样一个简单的用例来说,这似乎是矫枉过正。它还将导致每个实例都有一个单独的记录器,这似乎是显著的开销

MDC似乎接近我想要的,但据我所知,它只显示每个线程的特定信息,而不是对象的特定信息


我觉得我错过了什么。有没有一个简单的方法可以做到这一点?这不是一个常见的要求吗?

您使用的是什么日志库?logback?@assylias我正在使用SLF4J,因为每个人似乎都觉得它很棒。我刚刚开始使用它,而且特定的后端库可以很容易地交换。因此,如果有必要,我可以在后台使用logback。但是,我觉得我不是唯一一个想要这个简单功能的人,所以最好是一个独立于底层框架的解决方案。你可以给每个实例一个自己的记录器(例如,在记录器名称后面加上一个数字)。我希望解决方案在日志框架中,可能是以模式或自定义记录器的形式。@Henry正如我在问题中所说的,每个实例的记录器似乎是不必要的开销-我使用的对象数量实际上增加了一倍。此外,如何创建此记录器?我必须重写
LoggerWrapper
类的每个方法吗?如果我计算正确的话,有61个。你用的是什么日志库?logback?@assylias我正在使用SLF4J,因为每个人似乎都觉得它很棒。我刚刚开始使用它,而且特定的后端库可以很容易地交换。因此,如果有必要,我可以在后台使用logback。但是,我觉得我不是唯一一个想要这个简单功能的人,所以最好是一个独立于底层框架的解决方案。你可以给每个实例一个自己的记录器(例如,在记录器名称后面加上一个数字)。我希望解决方案在日志框架中,可能是以模式或自定义记录器的形式。@Henry正如我在问题中所说的,每个实例的记录器似乎是不必要的开销-我使用的对象数量实际上增加了一倍。此外,如何创建此记录器?我必须重写
LoggerWrapper
类的每个方法吗?如果我算对的话,有61个。