3

私は MyBatis3 を使用しています。すべての select、insert、update ステートメントを log4j ログ ファイルに記録する方法が必要です。

これが私のlog4jファイルです。助けてください

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=test.log
log4j.appender.file.MaxFileSize=2MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
4

2 に答える 2

2

Log4Jの構成情報はここで確認できます。つまり、マッパーまたはマッパーパッケージ、あるいは特定のマッパーメソッドでLog4JログレベルをDEBUGまたはTRACEに設定する必要があります。例log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE:TRACEはSQL、パラメータ、および結果セットを出力し、DEBUGはSQLとパラメータのみを出力します。

于 2012-11-19T06:57:16.697 に答える
2

私は方法を見つけました、他の人も利益を得ることができるように入れます

SQL ステートメントをログに記録するには、Simple Logging Facade for Java をダウンロードします (ここで slf4jをダウンロードします) 。

通常の mybatis、odbc、および oracle jar とは別に、クラスパスに以下を追加しました

  1. log4j-xxxx.jar
  2. log4j-over-slf4j-xxxx.jar
  3. log4j-rolling-appender.jar
  4. slf4j-api-xxxx.jar
  5. slf-log4j12-xxxx.jar

:ここでは xxxx が適切なバージョンです

私のlog4jに次の行を追加します(私の質問を参照してください)

# logger debug
log4j.logger.test.Log4jTestMyBatis=DEBUG, convert
log4j.appender.convert = org.apache.log4j.ConsoleAppender
log4j.appender.convert.layout=org.apache.log4j.PatternLayout
log4j.appender.convert.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c{3} %x - %m%n
# end logger debug

# mybatis loggers #
log4j.logger.com.ibatis=DEBUG, convert
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG, convert
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG, convert
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG, convert

テストに使用したGroovyクラスの例を次に示します

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.PropertyConfigurator;

import com.abc.db.ConfigInfo;
import com.abc.db.ConfigInfoExample;
import com.abc.db.client.ConfigInfoMapper;
import com.abc.db.init.DatabaseConnectivity;



class Log4jTestMyBatis {

    static Logger logger = LoggerFactory.getLogger(Log4jTestMyBatis.class)

    static main(args) {
        PropertyConfigurator.configure(Log4jTestMyBatis.class.getResource("log4j.properties"));

        DatabaseConnectivity.init()
        SqlSession newABCSession = DatabaseConnectivity.getNewABCSessionFactory().openSession()

        ConfigInfoMapper mapper = newABCSession.getMapper(ConfigInfoMapper.class)
        ConfigInfoExample qExample = new ConfigInfoExample()
        qExample.createCriteria().andProjectIdEqualTo("0-12170")
        List<ConfigInfo> ctlist = mapper.selectByExample(qExample)

        logger.debug(ctlist.get(0).getCfgName())

        newABCSession.close()
        logger.debug("debug")

    }   

}
于 2012-11-19T07:04:04.977 に答える