开发者社区> 问答> 正文

Log4j Windows下正常服务器没有输出日志,求助大神。

最近做了个小的网站,之前都是在本机上测试的,项目中的日志是使用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>

展开
收起
落地花开啦 2016-06-01 16:34:19 3764 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    当然是权限啦,可以先看下用户权限
    如果没有问题,再以当前程序写点别的内容 不要调用 log4j
    如果还没问题,这时候再考虑下打印开关和打印级别是否开启,要逐层分析问题

    2019-07-17 19:23:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载