log4j 配置以及无法在控制台打印问题详解
2017-03-15 18:37
387 查看
今天自己尝试着去配置了一下log4j,对于怎么配置,网上有一大把的详细说明,这里贴个链接也无妨(http://blog.csdn.net/dr_guo/article/details/50718063),所以,这篇博文,我就贴出我自己简单的配置文件代码,并讲解一下我遇到的问题。
log4j.properties配置文件
上面我只是简单的配置了两个INFO级别的输出,一个是console,将日志输出到控制台,另外一个是file,用于将日志输出到本地磁盘的D盘中,对于优先级,由高到低依次是:ALL ,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,OFF。但我们使用其中的ERROR,WARN,INFO,DEBUG就足够了。
我的文件配置在项目的 /WEB-INF/config/log4j.properties 这里,所以我需要在web.xml里面配置加载,一开始我是这样配置的。
然后配置完毕之后,我就高高兴兴的在一个类中引用了Logger,然后准备收获打印成果。
可是,当启动tomcat之后跑了一下,却发现控制台根本没有输出。磁盘上有文件,但是里面却没有log.info()的输出。
首先,我仔细检查了我的log4j配置文件,甚至最后拷贝了一份同事完整的配置文件放到我项目中,log.info()却依然没有在控制台输出。
最后在一篇博文中找到了答案(http://blog.csdn.net/apaking/article/details/9045053)(看到这片博文的发布日期我就感到惭愧。)
原来问题出在web.xml中,由于该配置文件是按照里面的配置顺序加载启动的,所以,在加载spring上下文启动之前,我们应该先加载好log4j的配置文件(具体为什么要这样做,我还在研究)。
最后我的web.xml配置文件是这样的。
好了,启动程序,看看控制台打印结果。
还有磁盘文件。
都没问题了!!
最后
学无止境,生生不息。
log4j.properties配置文件
#log4j properties file #log4j.rootLogger = [level],appenderName,appenderName2,... log4j.rootLogger = INFO,console,file #console log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold = DEBUG log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = %-22d{yyyy/MM/dd HH:mm:ss}%m%n #file log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = D:\\log4j.txt log4j.appender.file.Append = true log4j.appender.file.Encoding = UTF-8 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
上面我只是简单的配置了两个INFO级别的输出,一个是console,将日志输出到控制台,另外一个是file,用于将日志输出到本地磁盘的D盘中,对于优先级,由高到低依次是:ALL ,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,OFF。但我们使用其中的ERROR,WARN,INFO,DEBUG就足够了。
我的文件配置在项目的 /WEB-INF/config/log4j.properties 这里,所以我需要在web.xml里面配置加载,一开始我是这样配置的。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>ChatRoom</display-name> <welcome-file-list> <welcome-file>chat/pages/index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 设置字符集 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 加载所有的spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/config/applicationContext.xml</param-value> </context-param> <!-- 配置spring监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置spring mvc --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/config/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--配置session控制器开关 --> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置log4j日志 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/config/log4j.properties</param-value> </context-param> <!--log4j日志监听 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> </web-app>
然后配置完毕之后,我就高高兴兴的在一个类中引用了Logger,然后准备收获打印成果。
可是,当启动tomcat之后跑了一下,却发现控制台根本没有输出。磁盘上有文件,但是里面却没有log.info()的输出。
首先,我仔细检查了我的log4j配置文件,甚至最后拷贝了一份同事完整的配置文件放到我项目中,log.info()却依然没有在控制台输出。
最后在一篇博文中找到了答案(http://blog.csdn.net/apaking/article/details/9045053)(看到这片博文的发布日期我就感到惭愧。)
原来问题出在web.xml中,由于该配置文件是按照里面的配置顺序加载启动的,所以,在加载spring上下文启动之前,我们应该先加载好log4j的配置文件(具体为什么要这样做,我还在研究)。
最后我的web.xml配置文件是这样的。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>ChatRoom</display-name> <welcome-file-list> <welcome-file>chat/pages/index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 设置字符集 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置log4j日志 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/config/log4j.properties</param-value> </context-param> <!--log4j日志监听 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 加载所有的spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/config/applicationContext.xml</param-value> </context-param> <!-- 配置spring监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置spring mvc --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/config/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--配置session控制器开关 --> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
好了,启动程序,看看控制台打印结果。
还有磁盘文件。
都没问题了!!
最后
学无止境,生生不息。
相关文章推荐
- MyBatis Log4j无法打印SQL语句问题详解
- linux启动控制台配置以及网络启动设置,root无法登陆进入问题
- 解决Ubuntu删除/升级Python无法进入桌面以及控制台乱码问题
- ibatis执行SQL语句打印控制台的log4j.xml文件配置方法
- Log4j 2.0在开发中的高级使用详解—配置简单的控制台输出(三)
- JAVA随笔篇三(读写Properties配置文件以及路径问题详解)
- log4j中存在日志无法打印问题解决
- log4j配置使控制台能打印出hibernate生成sql的参数
- 解决 Tomcat 无法绑定 80 端口的问题,以及 Tomcat 配置虚拟目录、二级域名等
- Apache+PHP配置过程详解以及常见问题
- Eclipse中运行MapReduce程序时控制台无法打印进度信息的问题
- log4j打印到控制台,配置文件的内容。
- ibatis执行SQL语句打印控制台的log4j.xml文件配置方法
- 如何配置Oracle客户端以及sys系统超级管理员无法登录的问题
- log4j配置文件内容详解,以及使用步骤
- svn 配置详解,以及各种可能遇到的问题
- 快捷配置Log4J打印到控制台
- log4j各项配置都正确,却不能在控制台打印日志
- log4j中存在日志无法打印问题解决
- 解决Centos下vsftp无法上传文件的问题,附vsftp配置详解