java – SLF4J日志级别作为参数

前端之家收集整理的这篇文章主要介绍了java – SLF4J日志级别作为参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> Setting log level of message at runtime in slf4j11
我们正在寻求使用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相关文章