这个问题在这里已经有一个答案:>
Setting log level of message at runtime in slf4j11
我们正在寻求使用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;
....
}
}