SSH框架下项目的日志文件配置

来源:互联网 发布:小小冰人 知乎 编辑:程序博客网 时间:2024/06/05 09:45
SSH框架下项目的日志文件配置
一、导入开发包:
有这么几个:
1、log4j-1.2.*.jar  建议添加log4j-1.2.12 之后的版本。
2、slf4j-api-1.7.5
3、slf4j-log4j12-1.7.5 这里两个slf4j的版本最好对应。
关于开发包,slf4j可能会报这样两个错误:

1.Failed to load class org.slf4j.impl.StaticLoggerBinder

see-> http://www.slf4j.org/codes.html#StaticLoggerBinder

This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
关键是最后一句,配置一个(仅需要一个)后面提到的开发包,这里配合log4j的话选用slf4j-log4j12.jar。

2.SLF4J versions 1.4.0 and later requires log4j 1.2.12 or later

see-> http://www.slf4j.org/codes.html#log4j_version

The trace level was added to log4j in version 1.2.12 released on August 29, 2005. The trace level was added to the SLF4J API in version 1.4.0 on May 16th, 2007. Thus, starting with SLF4J 1.4.0, the log4j binding for SLF4J requires log4j version 1.2.12 or above.
就是说要用高版本的log4j.jar,至少要1.2.12后的。

这里多说一句,我之前出现这个问题,从换开发包到修改log4j.properties,捣鼓了大半天,一直是这个错误,我项目里导入的开发包明明是高于1.2.12这个版本的,为什么还是报这个错误。后来突然看到不知道是哪一篇blog里的一个评论才恍然大悟,报版本错误是有原因的,项目里的build path不等于服务器下的环境。我这里用的是tomcat,tomcat会在项目部署到服务器时自动把开发包过滤后一起复制到项目的lib下,这里的过滤会把重复的包以及基础的开发包过滤掉,却不会过滤版本不同的开发包。换句话说,我之前的项目可能导入过低版本的log4j.jar,后来在build path里把这个低版本的jar删了,又导入了一个高版本的jar,从编译器的build path来看是没有问题,但是在tomcat下,低版本的jar还是存在,并没有删掉,然后服务器启动的时候刚好先加载了那个低版本的开发包,然后就会出现因版本问题而产生的异常,也就是这里的问题。
其实说这么多话就想说明白一件事,当你觉得你的开发包没有问题的时候,去看看服务器下项目的开发包,或许问题就在那里。
OK,关于开发包的问题就说到这。


二、建立相关配置文件以及添加监听器
创建log4j.properties,文件存放的位置可以是src下,这样编译后会自动添加到WEB-INF的classes下。
配置文件的内容及格式这里不多说了,可以参考

http://summerbell.iteye.com/blog/487736

http://blog.csdn.net/waferleo/article/details/7641166

要注意的一点就是,如果需要输出SQL的查询语句,那么输出端的等级必须是DEBUG,因为SQL语句都是以DEBUG的形式被记录的。如果想要在控制台看到SQL语句,则必须定义控制台输出的等级为DEBUG,
这样一来会有一大堆不必要的信息输出来。个人感觉INFO等级的信息已经很多了。其实DEBUG的信息完全可以输出到日志文件保存,至于控制台,INFO等级的信息应该足够了,至于想在控制台看到SQL语句,其实还有一个方法,就是修改hibernate的配置文件,如果hibernate由spring管理,则修改spring的配置文件applicationContext.xml。

<property name="hibernateProperties">               <props>                    <prop key="hibernate.dialect">                         org.hibernate.dialect.MySQLDialect                    </prop>                    <prop key="hibernate.show_sql">                         trus                    </prop>                    <prop key="hibernate.format_sql">                         true                    </prop>               </props></property>

具体能修改的参数可以参考

http://blog.163.com/xu_shuhao/blog/static/52577487201192153016500/

这样就能在控制台看到SQL信息了。


监听器及log4j在web.xml里的配置为:

<!-- log4j start -->     <context-param>          <param-name>log4jConfigLocation</param-name>          <param-value>/WEB-INF/classes/log4j.properties</param-value>     </context-param>     <context-param>          <param-name>log4jRefreshInterval</param-name>          <param-value>60000</param-value>     </context-param>     <listener>          <listener-class>               org.springframework.web.util.Log4jConfigListener          </listener-class>     </listener><!-- log4j end -->


原创粉丝点击