mar*_*aos 14 java logging slf4j
我们希望使用SLF4J,但我们发现的一件事是你不能将关卡指定为参数,即
Logger.log(Level.INFO, "messsage");
Run Code Online (Sandbox Code Playgroud)
你必须这样做
logger.info("message");
Run Code Online (Sandbox Code Playgroud)
这可以防止能够通过方法传递所有内容,因此您可以将其他属性添加到类中的所有日志消息.
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());
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用SLF4j实现这一目标?
在slf4j调用周围编写一个包装器,并为六个日志级别创建自己的枚举.然后在你的包装器中,使用一个开关来调用正确的slf4j调用.
void myLog(Level level, String message)
{
switch (level)
{
case FATAL:
log.fatal(message);
break;
case ERROR:
log.error(message);
break;
....
}
}
Run Code Online (Sandbox Code Playgroud)