如题,我在项目用的LOG4J日志信息 输出到的文件 ,现在是用的写死的路径,“D:\logs\XXXX.html”如果只写xxx.html这个文件会生成到服务器的根目录下面。我的想法是把这个文件生成到项目下面,这样我就可以直接通过网站看到日志信息了。但是不能把路径写死 (因为一写死了,一换地方就又是麻烦), 我就试着用了一个servlet往system里面设置项目当前项目所在路径(app.home),并且设置<load-on-startup>1</load-on-startup>先加载这个servlet...这样就会在系统里设置app.home了。然后在LOG4J的配置就直接写的 ${app.home}\log\xxx.html,这样就不用写死路径了,可居然报错找不到路径,我把servlet 里的信息打印出来,可也是等到最好才会打印出来,debug也是等到最后才会运行请问高手们 要怎么设置启动才会在启动的时候先加载这个servlet。或者有什么方法,思路什么的。都提提吧帮帮忙,谢谢了。

解决方案 »

  1.   

    <load-on-startup>1 </load-on-startup>
      

  2.   

    <load-on-startup>0</load-on-startup>0的优先级最高,在第一次访问前就加载。
      

  3.   


    这个问题,我没有实际做过,
    但可以给出意见:
    1. 你如何确定在 web.xml 中确定你的工程路径,并放置在启动参数中,是 app.home 吗?
    2. 这个参数可以在 log4j.xml 中获取的到吗?
    3. 如果这一切,都看似正常,那么,你的 app.home 的实际路径又是什么?你是不是应该先检查一下这个路径?!
       比如,先打印出来自己调错,自己解决。
      

  4.   

    设定自启动的servlet然后通过web.xml的配置,让这个servlet在服务器启动的时候配置参数就可以了
      

  5.   

    谢谢大家的关注,作点 补充:我想要的“app.home” 是用application.getRealPaht("\\")方法得到的,或者request...(的一样)。这个方法返回项目所在实际路径?不是吗?我当然有打印出来看过,就象我在上面说的,我在调试的时候看过,是在最后面才打印出来,所以我才提问要怎么让它启动靠前点。(我已经是设置的<load-on-startup>1 </load-on-startup>)。上面有朋友说<load-on-startup>0 </load-on-startup> 设置成0,不晓得行不行 呆会儿先试一下,谢谢各位
      

  6.   

    试了下, 就算<load-on-startup>0</load-on-startup>servlet还是没有最先运行 当然就没有按照我想要的把application.getRealPath()得到的值在最先启动的时候setProperties进去。最后的时候倒是打印出来了,可已经没有用了啊。要怎样做????麻烦大家了!!!!!!
      

  7.   

    我试过 设置成 ${user.home} 设置成这样的话 启动就会在C:\Documents and Settings\Administrator..下面创建这个文件,  user.home 是系统自己有的,可以直接通过System.getProperty("user.home") 获得,也就是说在log4j.xml中用${""}这种形式是可以得到系统里的参数的.但是要在log4j.xml中获得服务器的路径要怎么搞?????????