在Tomcat6下使用Log4j记录日志,遇到一个烦心的问题,就是每天创建新日志文件时(日志文件设置为:org.apache.log4j.DailyRollingFileAppender)报:log4j:ERROR Failed to rename错误;
错误
出现
之后,最可恶的事情也随之而来,不但没有把前一天的日志
保存好
,而是把前面所有日志统统给覆盖掉,气的你会吐血
。
经过一翻查找,最终知道导致这一错误的罪魁祸首是在Tomcat server.xml中所设置的<Context docBase="xxxx" path="/" reloadable="true"/>所导致的,由于加了这一设置,日志文件始终被其占有,所以当log4j对日志文件进行rename时,就发生了Failed to rename错误
。
由于log4j在实现日志文件备份时使用的是file.renameTo(File)方法:
File file = new File(fileName);
boolean result = file.renameTo(target);
if(result) {
LogLog.debug(fileName +" -> "+ scheduledFilename);
} else {
LogLog.error("Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
}
而File类的renameTo方法的作用是:”改名或者移动文件作用;在同一个目录下renameTo是改名,在不同目录下是移动",所以在对一个被其他线程所锁定的文件进行改名时,肯定是会报错的。
为解决这一错误,
想来想去最终还是采用了http://duanni.iteye.com/blog/177271
的解决方案,修改了log4j源码,把file.renameTo(File)方法更改成copy文件了,算是解决了问题。不过还是有点担心,就像icefox_wjx 所说的一样,仍然无法预料操作系统会不会出现什么样的情况,如不允许文件copy等等;最终希望能有高人给出更好的解决方案。
分享到:
- 2009-08-13 01:33
- 浏览 13802
- 评论(7)
- 论坛回复 / 浏览 (5 / 5715)
- 查看更多
相关推荐
解决log4j:ERROR Failed to rename, win系统占用文件无法改名字的问题
log4j:ERROR Failed to rename
log4j:ERROR Failed to rename错误解决办法,修改源码里的DailyRollingFileAppender类,用此jar包就不会再出现ERROR Failed to rename的错误了
log4j:ERROR Failed to rename错误; 网上查找了下原因,大概意思是日志文件始终被占有,所以当log4j对日志文件进行rename时,就发生了Failed to rename错误 。要修改log4j的源码,附件是我修改好后的,方便大家...
log4j:ERROR Failed to rename错误解决办法 http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html
包括修改后的[color=darkred]org.apache.log4j.DailyRollingFileAppender[/color]类的源代码和已编译好的文件. 请用DailyRollingFileAppender.class替换log4j-1.2.15.jar包里相应的类. 博文链接:...
针对log4j:ERROR Failed to rename的问题,修改源代码中的DailyRollingFileAppender.java文件,将rename改为copy。 该log4j-1.2.15.jar,就是修改后的jar包。 已经过测试,可以正常生成日志文件。
log4j:ERROR Failed to rename错误; 网上查找了下原因,大概意思是日志文件始终被占有,所以当log4j对日志文件进行rename时,就发生了Failed to rename错误 。要修改log4j的源码,附件是我修改好后的,方便大家...
本文将详细讲解如何使用CFile::Rename成员函数来实现文件的改名操作,以及涉及到的相关知识点。 首先,CFile是MFC提供的一种类,用于封装对文件的基本操作,如打开、关闭、读取、写入等。CFile::Rename方法是该类中...
以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名、移动文件的目的。不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,又查不出原因,再后来...
问题描述: 在使用git 进行提交时, 出现上面这个报错, 导致无法提交. 报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下...
前言 最近发现了一个问题,运行 npm ... Error: EPERM: operation not permitted, rename ‘/usr/share/nginx/html/tanteng.me/node_modules/duplexify' -> ‘/usr/share/nginx/html/tanteng.me/node_modules/.duple
Freerename是一款功能强大并且操作简便的文件改名工具,没有任何使用限制,可以对所有的文件进行快速方便的重命名。 功能介绍 支持对文件及文件夹进行更名; 可以更改文件及文件夹的属性; 可以更改...
### Python解决方案:WindowsError: [Error 2] 在使用Python进行文件操作时,经常会遇到一些错误,特别是当涉及到文件系统时。本篇文章将详细介绍如何处理一个常见的错误——`WindowsError: [Error 2]`,并提供一种...
在 ORACLE 中,重命名(Rename)一个表的命令是 ALTER TABLE old_name RENAME TO new_name,而不是 RENAME old_name TO new_name。 REname 命令只是 SQL*Plus 的命令,不能在其他程序中使用,如果将其放在 Java、...
Tag Rename可以重命名MP3音乐,通过MP3音乐内置的TAG标签来重新命名你的歌曲文件,编辑文件夹封面艺术,多文件标签管理器编辑音乐的注释,编辑文件标题艺术家,所属专辑及音乐年份,作曲家及原始艺术家等信息,还...
python3 server.py 127.0.0.1 8888 ...AttributeError: module ‘os’ has no attribute ‘exit’ 部分代码入下: from socket import * import sys,os #实现登录 def do_login(s,user,name,addr): for i in user: i
"文件重命名工具rename"是一款历史悠久且功能丰富的应用程序,专门设计用于帮助用户高效地管理和整理他们的文件系统。在数字化时代,文件数量日益庞大,统一、有序的文件命名规则显得尤为重要,而这款工具正好解决了...