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的帖子和博客
首先,要准备三个包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的帖子和博客
相关文章推荐
- 工具栏CollectionsJAVA128
- 传智播客javase总结 7
- Spring事务传播行为和隔离机制
- JAVA不同层次模拟按键思路分享
- Java常用基础操作API
- 获取验证码函数
- 谈谈对Spring IOC的理解
- java实现栈结构解析
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
- 同步机制之--java之CountDownLatch闭锁
- 阿里云部署java web运行环境
- eclipse导入已存在的android工程时遇到AndroidManifest.xml文件出错的问题(红叉)
- Java Classloader机制解析
- java如何设置JFrame背景图片
- Spring源码追踪4——SpringMVC View解析
- JAVA中int、String的类型转换
- struts中的校验框架
- Java学习笔记(多线程_1)
- Struts2的国际化
- java环境变量的配置