Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

解决方案 »

  1.   

    我主要是想达到时时修改配置文件log4j.properties中参数而立刻使之生效,且不用重新启动tomcat 服务器;
    如:修改log4j.properties文件中的参数(日志文件大小参数由200K该为20K)后,所产生的日志文件大小就立刻只能生成到20K就从新产生新的日志文件,而不是原来的200K后再产生新文件,且必须是不重启动服务器的前提条件!
      

  2.   

    为了提高效率在web项目中与在应用项目中不同
    web项目中log4j一般在服务启动时通过了web.xml设定 利用某个指定Servlet(这里假设是Log4jInit.java)的init()方法读取了log4j的属性配置文件,放置在内存中,由于指定的Servlet的Log4jInit.init()方法在整个服务运行期间只执行一次,所以在服务运行状态下 你无论怎么改动配置文件其实都与内存中的设定无关了。
    不过可以试试 改动Log4jInit.java 服务器发现 该Servlet改动后会重新创建一次 ,看能否实现吧。先说了,我没试过 ,不过理论可以的:)
      

  3.   

    理论变成现实了
    我试了一下改动Log4jInit.java  保存后 配置文件立即生效了
      

  4.   

    请问兄弟在log4j源码中哪里有Log4jInit.java这个类呀?
      

  5.   

    在tomcat中把该工程reloadable=true设定之后tomcat就可以自动监测工程的变动了,不过会影响tomcat的运行效率
      

  6.   

    server.xml文件中修改那个属性。
      

  7.   

    在tomcat中的serverl.xml中的reloadable=true属性本来就是为true的
      

  8.   

    我觉得你可以写一个初始化log4j的servlet,然后更改配置后把哪个servlet运行一下就可以了。
      

  9.   

    log4j自带有FileWatchdog功能:
    PropertyConfigurator.configureAndWatch("c://log4j.properties",60000);//每分钟检测一次文件是否被更改,如果更改,则自动重新读取配置。DOMConfigurator.configureAndWatch("c://log4j.properties",60000);//xml配置格式的。