0

私は slf4j で logback を使用してログを記録するためのユーティリティを作成しています。私は 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);
        }       
    }

エラー:

スレッド「メイン」での例外 java.lang.IllegalArgumentException: 20000 は ch.qos.logback.classic.Level.fromLocationAwareLoggerInteger(Level.java:267) で有効なレベル値ではありません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 に答える