jFinal 使用slf4j打印sql及其它相关日志

首先本例是使用Druid链接数据库,并且是maven项目,使用logback 如果你和我一样可以参考下 ~ - ~

在config类中配置如下:

 public void configConstant(Constants me) { 
        ...
        me.setLogFactory(new Slf4jLogFactory());

    }
Slf4jLogFactory类是继承ILogFactory
public class Slf4jLogFactory implements ILogFactory {

    @Override
    public Log getLog(Class<?> aClass) {
        return new Slf4jLog(aClass);
    }

    @Override
    public Log getLog(String name) {
        return new Slf4jLog(name);
    }
}
Slf4jLog继承Log
public class Slf4jLog extends Log{
    private Logger log;

    Slf4jLog(Class<?> clazz) {
        log = LoggerFactory.getLogger(clazz);
    }

    Slf4jLog(String name) {
        log = LoggerFactory.getLogger(name);
    }


    public void info(String message) {
        log.info(message);
    }

    public void info(String message, Throwable t) {
        log.info(message, t);
    }

    public void debug(String message) {
        log.debug(message);
    }

    public void debug(String message, Throwable t) {
        log.debug(message, t);
    }

    public void warn(String message) {
        log.warn(message);
    }

    public void warn(String message, Throwable t) {
        log.warn(message, t);
    }

    public void error(String message) {
        log.error(message);
    }

    public void error(String message, Throwable t) {
        log.error(message, t);
    }

    public void fatal(String message) {
        log.error(message);
    }

    public void fatal(String message, Throwable t) {
        log.error(message, t);
    }

    public boolean isDebugEnabled() {
        return log.isDebugEnabled();
    }

    public boolean isInfoEnabled() {
        return log.isInfoEnabled();
    }

    public boolean isWarnEnabled() {
        return log.isWarnEnabled();
    }

    public boolean isErrorEnabled() {
        return log.isErrorEnabled();
    }

    public boolean isFatalEnabled() {
        return log.isErrorEnabled();
    }
}
继续回到config类:

public void configPlugin(Plugins me) {

        DruidPlugin dbPlugin = new DruidPlugin(
                PropKit.get("jdbcUrl"),
                PropKit.get("user"),
                PropKit.get("password"),
                PropKit.get("driverClass"));
        dbPlugin.addFilter(new StatFilter());
        dbPlugin.addFilter(new Slf4jLogFilter());
	//设置参数,如果你想的话
        dbPlugin.setInitialSize(...);
        dbPlugin.setMaxActive(...);
	...

        WallFilter wall = new WallFilter();
        wall.setDbType("你所使用的数据库");//mysql等
        wall.setLogViolation(true);

        dbPlugin.addFilter(wall);
	
	ActiveRecordPlugin arp=new ActiveRecordPlugin(dbPlugin);	

	arp.setDialect(new SqlServerDialect());
	arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
	// 配置Model 映射//
	arp.addMapping("xxx",xxx.class);

        //添加到插件列表中
	me.add(dbPlugin);
	me.add(arp);
    }

pom.xml 添加jar包

<dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.9</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.9</version>
        </dependency>


logback.xml 可按日期每天生成日志,如果日志过多当达到设定大小后会创建一个新的

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="logHome" value="存放路径"/> 例如/data/log/xx

    <!-- 过滤 -->
    <include resource="logback-application.xml" />

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <prudent>true</prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logHome}/你的文件名.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>60</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>.honeylovelycom
        </layout>
    </appender>


    <logger name="切入的路径" level="DEBUG"> //例如 com.baidu 
        <appender-ref ref="console"/>
        <appender-ref ref="rollingFile"/>
    </logger>

    <logger name="切入的路径=" level="DEBUG">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile"/>
    </logger>

    <logger name="切入的路径" level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
    </logger>

    <root level="DEBUG">
         <appender-ref ref="console" />
         <appender-ref ref="rollingFile" />
    </root>

    <logger level="debug" additivity="false">
    </logger>
</configuration>

logback-application.xml 过滤

<?xml version="1.0" encoding="UTF-8"?>
<included>
    <logger name="jdbc.sqltiming" level="DEBUG" />
    <logger name="jdbc" level="WARN" />
    <logger name="org.eclipse" level="WARN" />
    <logger name="druid.sql.ResultSet" level="WARN" />
    <logger name="druid.sql.Connection" level="WARN" />
    <logger name="io.netty" level="WARN" />
    <logger name="net.sf.ehcache" level="WARN" />
</included>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值