log4j.properties文件放在classpath文件夹下(即web项目的WEB-INF/classes文件夹下,这样可以保证log4j能够自动识别配置文件,而不用显式的配置)内容如下: log4j.rootLogger=warn, stdout,file ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out #log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %c{1}:%L - %m%n ### direct messages to file file.log ### #log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.DatePattern=yyyyMMdd log4j.appender.file.File=../logs.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %5p %c{1}:%L - %m%n 问题描述:在控制台程序下可以输出到控制台和logs.log文件当中,但是在web项目当中做的log输出只能输出到控制台,而无法输出到logs.log文件当中。 控制台程序如下: public class TestLogger { public static Log log = LogFactory.getLog(TestLogger.class); public static void main(String[] args) { log.error("怎么回事?"); } @Test public void test() { log.error("怎么回事?"); } }以上程序可以输出到控制台和logs.log文件当中。但是如下程序: public class TestLogs extends HttpServlet { private static final long serialVersionUID = 1L; private static Log log = LogFactory.getLog(TestLogs.class); /** * @see HttpServlet#HttpServlet() */ public TestLogs() { // TODO Auto-generated constructor stub } @Override public void init() throws ServletException { log.error("怎么回事?"); } }输出只能输出到控制台,而无法输出到logs.log文件当中。 问题出在log4j.appender.file.File=../logs.log 这个配置之上。应更改为: log4j.appender.file.File=d:/logs.log 相关文章: