关于修改Log4j配置文件后使之打印日志信息及时生效的问题?急急急急急急急急急急急急急急急急急急急急急????????
我应用tomcat作为服务器,做了个JSP页面,是专门修改log4j.properties配置文件中的配置值的,当我提交页面修改完此文件中配置值后,要重启tomcat服务器后,新的修改配置才能起作用;
例如修改配置文件中打印级别后,tomcat后台的打印日志信息级别不能马上生效,而要重启tomcat服务器后才能打印出修改后的打印级别,不然还是引用一开始的打印级别;
现在请问各位在log4j中有没有直接调用的方法可以去直接刷新log4j.properties配置文件信息,使日志打印信息不用重启服务器的情况下就生效;如果在log4j中没有直接引用的相关方法可不可以直接写一个来刷新log4j.properties配置文件的类,怎么去写?请给出相关代码?谢谢!
问题点数:50、回复次数:21Top
1 楼wangxindong(www)回复于 2006-03-24 08:08:06 得分 0
怎么没有人来顶一下呀?Top
2 楼pigengler(en)回复于 2006-03-24 08:19:06 得分 10
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Top
3 楼wangxindong(www)回复于 2006-03-24 21:26:11 得分 0
我主要是想达到时时修改配置文件log4j.properties中参数而立刻使之生效,且不用重新启动tomcat 服务器;
如:修改log4j.properties文件中的参数(日志文件大小参数由200K该为20K)后,所产生的日志文件大小就立刻只能生成到20K就从新产生新的日志文件,而不是原来的200K后再产生新文件,且必须是不重启动服务器的前提条件!Top
4 楼cwill(休息一下)回复于 2006-03-25 16:17:33 得分 10
为了提高效率在web项目中与在应用项目中不同
web项目中log4j一般在服务启动时通过了web.xml设定 利用某个指定Servlet(这里假设是Log4jInit.java)的init()方法读取了log4j的属性配置文件,放置在内存中,由于指定的Servlet的Log4jInit.init()方法在整个服务运行期间只执行一次,所以在服务运行状态下 你无论怎么改动配置文件其实都与内存中的设定无关了。
不过可以试试 改动Log4jInit.java 服务器发现 该Servlet改动后会重新创建一次 ,看能否实现吧。先说了,我没试过 ,不过理论可以的:)Top
5 楼wangxindong(www)回复于 2006-03-26 09:55:48 得分 0
谁有过这方面的研究?或有相关明确方法?Top
6 楼cwill(休息一下)回复于 2006-03-26 17:48:17 得分 0
理论变成现实了
我试了一下改动Log4jInit.java 保存后 配置文件立即生效了Top
7 楼wangxindong(www)回复于 2006-03-28 19:42:52 得分 0
请问兄弟在log4j源码中哪里有Log4jInit.java这个类呀?Top
8 楼wangxindong(www)回复于 2006-03-29 08:28:41 得分 0
怎么没有人来顶一下呀?Top
9 楼dubufanchen(benney)回复于 2006-03-29 12:26:03 得分 5
在tomcat中把该工程reloadable=true设定之后tomcat就可以自动监测工程的变动了,不过会影响tomcat的运行效率Top
10 楼wangxindong(www)回复于 2006-03-30 21:48:49 得分 0
请问是哪个文件呀?Top
11 楼haohao100(好好100)回复于 2006-03-31 08:19:19 得分 0
dingTop
12 楼LexChen(阿修罗)回复于 2006-03-31 15:13:33 得分 0
顶5楼Top
13 楼ohbug(臭虫)回复于 2006-03-31 19:40:52 得分 5
server.xml文件中修改那个属性。Top
14 楼wangxindong(www)回复于 2006-04-01 17:26:34 得分 0
shi shi kan xianTop
15 楼wangxindong(www)回复于 2006-04-03 21:22:40 得分 0
在tomcat中的serverl.xml中的reloadable=true属性本来就是为true的Top
16 楼Jolestar(叶明)回复于 2006-04-04 05:39:23 得分 5
我觉得你可以写一个初始化log4j的servlet,然后更改配置后把哪个servlet运行一下就可以了。Top
17 楼haohao100(好好100)回复于 2006-04-04 21:51:19 得分 0
楼上的说了等于没有说?Top
18 楼wangxindong(www)回复于 2006-04-05 22:24:06 得分 0
再冒个泡Top
19 楼haohao100(好好100)回复于 2006-04-06 22:02:01 得分 0
dingTop
20 楼pigo()回复于 2006-04-06 22:38:40 得分 15
log4j自带有FileWatchdog功能:
PropertyConfigurator.configureAndWatch("c://log4j.properties",60000);//每分钟检测一次文件是否被更改,如果更改,则自动重新读取配置。
DOMConfigurator.configureAndWatch("c://log4j.properties",60000);//xml配置格式的。
Top
21 楼wangxindong(www)回复于 2006-04-09 23:51:19 得分 0
今日结贴!谢谢各位参与!Top




