0

我正在编写一个使用 logback 和 slf4j 进行日志记录的实用程序,因为我是 logback 的新手,所以我需要知道我是否可以通过调用类来编写用户定义的日志级别的日志语句,就像我们在 java 日志中使用的那样

   LOGGER.log(Level.FINEST,"Message");

那么是否有可能在 logback 中实现它。我遇到了 logback API,发现了类似 LOGGER.isEnabledFor(loggerLevel) 的东西。可以用于上述目的以及如何实现它。

import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;

public class LogUtil {

protected static final Logger LOGGER = (Logger)LoggerFactory.getLogger("LOGUTIL");  


    public void logMethodEntrance(String className,String methodName,Level loggerLevel){
        if(LOGGER.isEnabledFor(loggerLevel)){
                    //Something like below?
                    //LOGGER.log(loggerLevel,"Entering Method-"+methodName+" of class - "+className);           
        }       
    }
}

我尝试了日志语句,但我遇到了错误

public void logMethodEntrance(String className,String methodName,Level loggerLevel){
        if(LOGGER.isEnabledFor(loggerLevel)){
            //LOGGER.debug("Entering Method-"+methodName+" of class - "+className);
            LOGGER.log(null, null,loggerLevel.toInt(), "Just Message", null, null);
        }       
    }

错误:

线程“main”中的异常 java.lang.IllegalArgumentException: 20000 在 ch.qos.logback.classic.Level.fromLocationAwareLoggerInteger(Level.java:267) 的 ch.qos.logback.classic.Logger.log( Logger.java:787) 在 com.vsi.commonutil.logging.LogUtil.logMethodEntrance(LogUtil.java:29) 在 com.vsi.commonutil.test.LogUtilTest.testforlogging(LogUtilTest.java:22) 在 com.vsi.commonutil .test.LogUtilTest.main(LogUtilTest.java:43)

4

1 回答 1

1

我刚刚通过使用 Level.toLocationAwareLoggerInteger(loggerLevel) 找到了我的问题的答案

LOGGER.log(null,logUtil.getClass().getName(), Level.toLocationAwareLoggerInteger(loggerLevel), "Entering into a method - MyMethod", argArray, t)
于 2014-04-29T09:07:07.740 回答