做了一个最简单的servlet项目,只有一个servlet,然后想在servlet把日志记录到项目下的logs文件夹中的logRecord.log和logRecorderror.log。
然而路径问题弄了我一天,找了很多资料,绝对路径是可以解决,但是如果移植的话,那么绝对路径改起来会很麻烦。所以最好用相对路径。
但是网上的相关资料都无法解决我的问题,后来一不做二不休,瞎弄,发现路径直接写logs/logRecord.log竟然成功的把日志写入进去了。
好了,话不多说 直接上代码。
1.首先我们把
commons-logging-1.1.3.jar
log4j-1.2.17.jar
导入到项目中。
2.配置log4j.properties
### set log levels ###
log4j.rootLogger = INFO, stdout, D, E
#log4j.rootLogger = INFO, stdout
#log.path = /mylog
###ãè¾åºå°æ§å¶å° ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy/MM/dd-HH:mm:ss} [%-5p] [%c] [%F] - %m %n
### è¾åºå°æ¥å¿æ件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/logRecord.log
log4j.appender.D.DatePattern='.'yyyy-MM-dd
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy/MM/dd-HH:mm:ss} [%-5p] [%c] [%F] - %m %n
log4j.appender.D.layout.Encoding=UTF-8
### ä¿åå¼å¸¸ä¿¡æ¯å°åç¬æ件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
##å¼å¸¸æ¥å¿æ件
log4j.appender.E.File = logs/logRecorderror.log
log4j.appender.E.Append = true
##åªè¾åºERROR级å«ä»¥ä¸çæ¥å¿
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy/MM/dd-HH:mm:ss} [%-5p] [%c] [%F] - %m %n
log4j.appender.E.DatePattern='.'yyyy-MM-dd
log4j.appender.E.Encoding=UTF-8
这个是servlet,里面的main方法是来把日志写入文件中。
package com.pingpay.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class PingPayLogServlet extends HttpServlet {
// 在任何需要记录日志的类中
Log log = LogFactory.getLog(this.getClass());
/**
* 记录ping++返回的数据
*
*/
public void