log4j控制台能输出,但是没有生成日志文件

不想醒来 2017-05-31 10:58:55
在maven配置的一个spring mvc项目中使用log4j一段时间了,之前一直只是在控制台看打印信息,现在想要把这些信息记录下来。但是xml文件配置后没有效果,猜测是web.xml文件中需要配置,但是不知道怎么配?而且不明白如果是这样,那为什么之前在控制台输出一直可以用?求指点!下面是几个配置文件,保险起见我把springmvc和mybatis的都发一下
首先是log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [ %-d{yyyy-MM-dd HH:mm:ss SSS} ]: %l - %m%n" />
</layout>
</appender>

<appender name="infoFile" class="org.apache.log4j.FileAppender">
<param name="File" value="/logs-test/info.log"></param>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [ %-d{yyyy-MM-dd HH:mm:ss SSS} ]: %l - %m%n" />
</layout>
</appender>

<appender name="infoFile2" class="org.apache.log4j.FileAppender">
<param name="File" value="${catalina.base}/logs-test/info.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [ %-d{yyyy-MM-dd HH:mm:ss SSS} ]: %l - %m%n" />
</layout>
</appender>

<appender name="infoFile3" class="org.apache.log4j.FileAppender">
<param name="File" value="${user.home}/logs-test/info.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [ %-d{yyyy-MM-dd HH:mm:ss SSS} ]: %l - %m%n" />
</layout>
</appender>

<appender name="infoFile4" class="org.apache.log4j.FileAppender">
<param name="File" value="D:/dev/info.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [ %-d{yyyy-MM-dd HH:mm:ss SSS} ]: %l - %m%n" />
</layout>
</appender>

<!-- Application Loggers -->
<logger name="com.shanshan.bo">
<level value="info" />
</logger>

<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>

<logger name="org.springframework.beans">
<level value="info" />
</logger>

<logger name="org.springframework.context">
<level value="info" />
</logger>

<logger name="org.springframework.web">
<level value="info" />
</logger>

<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
<appender-ref ref="infoFile" />
<appender-ref ref="infoFile2" />
<appender-ref ref="infoFile3" />
<appender-ref ref="infoFile4" />
</root>

</log4j:configuration>



然后是web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!-- mybatis的配置文件 -->
/WEB-INF/mybatis/mybatis-spring-multiDB.xml
</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>30</session-timeout>
</session-config>

</web-app>



...全文
4050 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleyk 2018-02-10
  • 打赏
  • 举报
回复
日志文件是不是自己偷偷的溜走了?

给你个logback日志的xml配置参考,部分截图如下


北落师门_Orz 2018-02-10
  • 打赏
  • 举报
回复
log4j.appender.logfile.File=../logs/hy-crm.txt
  • 打赏
  • 举报
回复
ilove生活 2018-02-02
  • 打赏
  • 举报
回复
很简单 ,看下log4j.xml配置文件是否加到编译路径里面了,如果没有编译,读不到配置,就没有输出了。
不想醒来 2017-06-01
  • 打赏
  • 举报
回复
刚刚试了下,发布到服务器上的tomcat运行的时候就可以用了,但是自己本地STS开发环境的就无效,这是为什么呢
不想醒来 2017-06-01
  • 打赏
  • 举报
回复
第二天了,有没有大牛指点下~
不想醒来 2017-05-31
  • 打赏
  • 举报
回复
一层发布下了,二楼补充下。 接着是spring mvc 和 mybatis的

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.shanshan.bo" />
	
	<interceptors>
		<!-- 多个拦截器,按顺序执行 -->
		<interceptor>
			<mapping path="/**"/> <!-- 表示拦截所有的url包括子url路径 -->
			<beans:bean class="com.shanshan.bo.interceptor.LoginHandlerInterceptor"/>
		</interceptor>
	</interceptors>
	
</beans:beans>


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
                        
	<!-- 自动扫描 -->
	<context:component-scan base-package="com.shanshan.bo" />
	<!-- 引入配置文件 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:jdbc.properties" />
	</bean>
	
	<!--dataSource管理-->
	<bean id="dynamicDataSource" class="com.shanshan.bo.utils.DynamicDataSource" >
	    <property name="targetDataSources">
	        <map key-type="java.lang.String">
	            <!--通过不同的key决定用哪个dataSource-->
	            <entry value-ref="mdataDataSource" key="mdataDataSource"></entry>
	            <entry value-ref="devDataSource" key="devDataSource"></entry>
	        </map>
	    </property>
	    <!--设置默认的dataSource-->
	    <property name="defaultTargetDataSource" ref="mdataDataSource">
	    </property>
	</bean>
	
	<!--多个数据源dataSource-->
	<bean id="mdataDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${iq.mdata.driver}" />
		<property name="url" value="${iq.mdata.url}" />
		<property name="username" value="${iq.mdata.username}" />
		<property name="password" value="${iq.mdata.password}" />
		<!-- 初始化连接大小 -->
		<property name="initialSize" value="${initialSize}"></property>
		<!-- 连接池最大数量 -->
		<property name="maxActive" value="${maxActive}"></property>
		<!-- 连接池最大空闲 -->
		<property name="maxIdle" value="${maxIdle}"></property>
		<!-- 连接池最小空闲 -->
		<property name="minIdle" value="${minIdle}"></property>
		<!-- 获取连接最大等待时间 -->
		<property name="maxWait" value="${maxWait}"></property>
	</bean>
	
	<bean id="devDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${iq.dev.driver}" />
		<property name="url" value="${iq.dev.url}" />
		<property name="username" value="${iq.dev.username}" />
		<property name="password" value="${iq.dev.password}" />
		<!-- 初始化连接大小 -->
		<property name="initialSize" value="${initialSize}"></property>
		<!-- 连接池最大数量 -->
		<property name="maxActive" value="${maxActive}"></property>
		<!-- 连接池最大空闲 -->
		<property name="maxIdle" value="${maxIdle}"></property>
		<!-- 连接池最小空闲 -->
		<property name="minIdle" value="${minIdle}"></property>
		<!-- 获取连接最大等待时间 -->
		<property name="maxWait" value="${maxWait}"></property>
	</bean>
	
	<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dynamicDataSource" />
		<!-- mybatis的配置文件 -->
		<!-- <property name="configLocation" value="/WEB-INF/mybatis/mybatis-config.xml"></property> -->
		<!-- 自动扫描mapping.xml文件 -->
		<property name="mapperLocations" value="classpath:com/shanshan/bo/mapping/*.xml"></property>
	</bean>
	
	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.shanshan.bo.mapper" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	</bean>

	<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dynamicDataSource" />
	</bean>
	
</beans>

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧