您的位置:首页 > 编程语言 > Java开发

spring 集成logbcak日志

2015-11-26 20:01 375 查看
今天完整的为springmvc 配置了logback日志系统。

首先,要准备三个包logback-access、logback-classic、logback-core 三个包。这三个包是logback自身的jar包,spring其实不支持logback,所以我们要在加入一个转化包logback-ext-spring 。所有jar准备齐全后,就要进行web的配置。

日志系统的配置,主要在web.xml的中,要加入一下代码

<!-- 日志 -->

<context-param>

<param-name>logbackConfigLocation</param-name>

<param-value>classpath:/resource/config/logback.xml</param-value> //你自己配置logback文件的位置

</context-param>

<listener>

<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> //这个listener是属于logback-ext-spring,作用就是在spring中启动logback

</listener>

以上就会加入logback的。下面就要对logback进行配置,我将会列出一个包含插入数据库,导出file文件,控制台输出的logback,xml模板

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

<property resource="resource/mysql.properties"/> //这个是存储数据库连接信息的properties文件,也可以用 file = "文件地址"读取相对路径下的文件

<property name = "logbackHome" value = "/opt/weixin/log"/> //设置自己文件输出的地址

<!-- 控制台输出 -->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

</encoder>

</appender>

<!-- 按照每天生成日志文件 -->

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

<file>${logbackHome}/weixin.log</file>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<!--日志文件输出的文件名-->

<FileNamePattern>${logbackHome}/weixin.log.%d{yyyy-MM-dd}.log</FileNamePattern>

<!-- 日志保存天数 -->

<MaxHistory>30</MaxHistory>

</rollingPolicy>

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>

</encoder>

<!--日志文件最大的大小-->

<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

<MaxFileSize>10MB</MaxFileSize>

</triggeringPolicy>

</appender>

<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->

<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />

<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />

<logger name="org.hibernate.SQL" level="DEBUG" />

<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />

<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

<!--日志异步到数据库 -->

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">

<filter class="ch.qos.logback.classic.filter.LevelFilter">

<level>INFO</level>

<onMatch>ACCEPT</onMatch>

<onMismatch>DENY</onMismatch>

</filter>

<connectionSource

class="ch.qos.logback.core.db.DataSourceConnectionSource">

<!--连接池 -->

<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">

<driverClass>${ds.driverName}</driverClass>

<jdbcUrl>${ds.weixin}</jdbcUrl>

<user>${ds.username}</user>

<password>${ds.password}</password>

<acquireIncrement>5</acquireIncrement>

<minPoolSize>5</minPoolSize>

<maxPoolSize>10</maxPoolSize>

<maxIdleTime>1800</maxIdleTime>

</dataSource>

</connectionSource>

</appender>

<logger name="com.cn" level="INFO">

<appender-ref ref="DB" />

</logger>

<!-- 日志输出级别 -->

<root level="INFO">

<appender-ref ref="STDOUT" />

<appender-ref ref="FILE" />

</root>

</configuration>

主要讲解下数据库配置的部分,网上大多的配置文件都会讲解控制台输出、file文件输出的配置格式。我也是借鉴的网络,废话少说开始正题.网上很多在数据库配置的时候,往往列出的配置格式只是如下:

<!--日志异步到数据库 -->

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">

<filter class="ch.qos.logback.classic.filter.LevelFilter">

<level>INFO</level>

<onMatch>ACCEPT</onMatch>

<onMismatch>DENY</onMismatch>

</filter>

<connectionSource

class="ch.qos.logback.core.db.DataSourceConnectionSource">

<!--连接池 -->

<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">

<driverClass>${ds.driverName}</driverClass>

<jdbcUrl>${ds.weixin}</jdbcUrl>

<user>${ds.username}</user>

<password>${ds.password}</password>

</dataSource>

</connectionSource>

</appender>

但是这种格式在你测试的时候会出现错误,说连接池不能用,主要因为缺少:mchange-commons-java这个主要是补充c3p0 jar包。补充完整后,测试就不会报错,但是也会出现jdbc之类的错误,这主要是因为你没有设置连接池一些基本参数,添加参数即可。

这样就是基本完成了logback的基本设置,下面就要在数据库中建立表

ch.qos.logback.classic.db.script中找到对应数据库的sql语句,用这些语句生成对应的表,

这些做完之后,理论上是可以将logback插入到数据库中了,但是这时候又出现问题,

因为一般的web项目都会引入commen-logging这个jar包,它的存在会影响logback,这时候就要加入jcl-over-slf4j jar包就可以避免这个错误。

完成这些之后,logback就可以完整的集成到spring中.

建议,在做logback集成的时候用测试不断完善,直到不出现错误为止,这样可以避免,每次打开tomcat.

测试代码:

private static final Logger logger = LoggerFactory.getLogger(LogTest.class);

public static void main(String[] args) {

LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();

JoranConfigurator configurator = new JoranConfigurator();

configurator.setContext(lc);

lc.reset();

try {

configurator.doConfigure("自己logback.xml文件的地址");

} catch (JoranException e) {

e.printStackTrace();

}

StatusPrinter.printInCaseOfErrorsOrWarnings(lc);

System.out.println("===================");

logger.info("test{}",new Object[]{"jk"});

logger.error("error");

logger.info("Changed from [{}] to [{}] by [{}].", new Object[] {

"test1", "test2",

"test3"});

}

这篇测试完成主要靠在网上零散的收集资料,借鉴别的代码,特别感谢,网上那些关于logback的帖子和博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: