java - SLF4J 日志级别作为参数

标签 java logging slf4j

<分区>

我们正在寻求使用 SLF4J,但我们发现一件事是您不能将级别指定为参数,即

Logger.log(Level.INFO, "messsage");

你必须这样做

logger.info("message");

这会阻止通过方法传递所有内容,因此您可以将其他属性附加到类中的所有日志消息。

public class Test
{
    public Test(SomeObj obj)
    {
       log(Level.INFO, "message");
    }

    public void anotherMethod()
    {
       log(Level.DEBUG, "another message");
    }
    private void log(Level level, String message)
    {
        logger.log(level, message + obj.someString());
    }
}

有没有办法使用 SLF4j 实现这一点?

最佳答案

围绕 slf4j 调用编写一个包装器,并为六个日志级别创建您自己的枚举。然后在您的包装器中,使用开关调用正确的 slf4j 调用。

void myLog(Level level, String message)
{
  switch (level)
  {
  case FATAL:
    log.fatal(message);
    break;
  case ERROR:
    log.error(message);
    break;
  ....
  }
}

关于java - SLF4J 日志级别作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831785/

相关文章:

支持 SQL Server 的 Java 内存数据库

java - 将字符转换为大写而不改变原始数组

java - 为什么这段代码抛出 classCastException

c# - 无法将 "Microsoft.Azure.Devices"包的 azure sdk 日志获取到控制台

java - 在 java.util.logging 中,全局记录器有什么用?

logging - Winston logger-是否可以记录应用程序的关闭

java - 如何在spark中使用org.slf4j.Logger?

android - 使用哪个 Android 日志框架?

java - 无法正确导入java的opencsv模块[com.opencsv包不存在]

java - Storm : set log level for topology