使用java.util.Logging.Logger记录附加信息

使用java.util.Logging.Logger记录附加信息,java,logging,Java,Logging,在我的团队中,我们有一个日志记录标准,并且在大多数情况下 Logger.log(Level, String, [Throwable]) 方法工作正常(它在日志中为我们提供自动时间戳、类名、方法名、消息和可丢弃信息)。但是,我们还记录了一个额外的标识符,它是我们标准的一部分(我们使用它来帮助监控日志) 我的问题是,我希望能够以一种相当轻松的方式轻松地执行此标准。起初,我们创建了一个包装器记录器类,但问题是,如果您知道自己使用的是哪种方法,那么就失去了记录器的优势 void myLoggerMe

在我的团队中,我们有一个日志记录标准,并且在大多数情况下

Logger.log(Level, String, [Throwable]) 
方法工作正常(它在日志中为我们提供自动时间戳、类名、方法名、消息和可丢弃信息)。但是,我们还记录了一个额外的标识符,它是我们标准的一部分(我们使用它来帮助监控日志)

我的问题是,我希望能够以一种相当轻松的方式轻松地执行此标准。起初,我们创建了一个包装器记录器类,但问题是,如果您知道自己使用的是哪种方法,那么就失去了记录器的优势

void myLoggerMethod(Level level, String msg, String identifier) { 
    logger.log(level, identifier + " " + msg); 
}
将记录基本正确的内容,但随后会记录错误的方法名称。您可以使用logp来解决这个问题,但随后您必须以字符串形式发送方法名称,这会变得非常糟糕


有没有一种好方法可以让人们输入额外的数据来记录?是否有任何扩展机制允许这样做,或者API中缺少什么

我不完全理解您的用例,但您可以尝试实现自定义(或)或扩展现有的用例,如
SimpleFormatter
/
FileHandler

您可以从另一个角度看它,并在IDE中设置代码模板

例如,我将IDE设置为将logdebug、logerror、loginfo更改为日志记录的代码段

在我的IDE中,我键入logdebug,点击ctrl+space,它将其转换为

if(logger.isDebugEnabled()){
logger.debug("xxx");}

然后我就可以填写我想要的信息。

我们最终选择了另一条路线。在这个项目中,我们所有的异常都是从一个特定的类扩展而来的,这个类包含了我们需要的信息。因为这主要用于记录异常,所以我们有一个自定义格式化程序来检查异常类型,并提取信息(如果存在)。