最近做了个小的网站,之前都是在本机上测试的,项目中的日志是使用Log4J1.2.17,在本机(Windows)上测试完全正常,包括输出以及每天生成一个日志文件都是妥妥的,但是昨天部署到服务器(Ubuntu14.04)之后,我再去查看日志输出却没有任何日志内容,今天再看也没有生成昨天的日志文件,找了很多资料都没有解决,特来问问:
我的Log4J 配置:
log4j.rootLogger=info, stdout, log, errorlog
log4j.Logger=search,Test
###Console ###
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{ABSOLUTE} [ %t ] [ %p ]:%L - %m%n
### Log ###
log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.File = log.log
log4j.appender.log.Append = true
log4j.appender.log.Threshold = INFO
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ] %m%n
项目启动时自动加载配置文件的Servlet:
public class InitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InitServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
private static Logger logger=Logger.getLogger(InitServlet.class);
public void init() throws ServletException {
String path=this.getServletContext().getRealPath("/");
String file=this.getInitParameter("log4j_init_path");
String logFile=this.getInitParameter("log4j_file_path");
if(file!=null)
{
Properties prop = new Properties();
try{
prop.load(new FileInputStream(path+file)); //加载log4j.properties
prop.setProperty("log4j.appender.log.File", path+logFile+ prop.getProperty("log4j.appender.log.File")); //设置日志文件的输出路径
PropertyConfigurator.configure(prop); //加载配置项
}catch(Exception e)
{
logger.info("初始化log4j日志输入路径异常,请检查web.xml参数配置是否正常,异常发生在"+this.getClass().getName()+"类的public void init()方法,异常的愿意是:"+e.getMessage(), e.fillInStackTrace());
}
}
}
public static Logger getLogger(){
return logger;
}
}
Servlet的配置:
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.hnust.servlet.InitServlet</servlet-class>
<init-param>
<param-name>log4j_init_path</param-name>
<param-value>WEB-INF\classes\log4j.properties</param-value>
</init-param>
<init-param>
<param-name>log4j_file_path</param-name>
<param-value>WEB-INF\logs\</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
当然是权限啦,可以先看下用户权限
如果没有问题,再以当前程序写点别的内容 不要调用 log4j
如果还没问题,这时候再考虑下打印开关和打印级别是否开启,要逐层分析问题