I could reproduce the problem: it happened right after I reload the apps using the Manager app, using the URL:
https://myserver/manager/reload?path=/webapp
I could do this several times. After a Tomcat start/stop, the logging and rotating works. After a reload, the current log file stayed there, the alread rotated files (ext >= 1) are rotated to ext+1, but no new file with extension .1 appeared
I had tried Tim's workaround, but it seems to no avail.
My current config is:
log4j.rootLogger=DEBUG log4j.logger.dev=DEBUG, dev
log4j.appender.dev=com.infores.fr.ihs.IHSlog
log4j.appender.dev.File=C:/logs/dev_01.log
log4j.appender.dev.layout=org.apache.log4j.PatternLayout
log4j.appender.dev.layout.ConversionPattern=%d %X{RemoteHost} %C %-5p %c - %m%n
log4j.appender.dev.MaxFileSize=10KB
log4j.appender.dev.MaxBackupIndex=100
The IHSlog class is:
public class IHSlog extends RollingFileAppender {
/** * Rename file, if fails, copy it. * * @param src The source file * @param target The target file */ private static void renameFile(File src, File target) {
if (!src.renameTo(target)) { System.out.println("renameTo() false"); try { copyFile(src, target); } catch (IOException e) { System.out.println("Can't rename file 'cause " + e.getMessage()); } } else { System.out.println("renameTo() false"); } }
/**
* Copy a file to another file.
*
* @param source The source file
* @param target The target file
* @exception IOException
*/
private static void copyFile(File source, File target) throws IOException {
char c = '\u0400';
byte abyte0[] = new byte[c];
FileInputStream fileinputstream = new FileInputStream(source);
BufferedInputStream bufferedinputstream = new BufferedInputStream(fileinputstream);
FileOutputStream fileoutputstream = new FileOutputStream(target);
BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(fileoutputstream);
int i;
while((i = fileinputstream.read(abyte0)) != -1) { fileoutputstream.write(abyte0, 0, i); } bufferedoutputstream.close(); bufferedinputstream.close(); } }
Data I got to the console (I had started Tomcat with the startup.bat script, and -Dlog4j.debug=true):
log4j: Parsing for [dev] with value=[DEBUG, dev].
log4j: Level token is [DEBUG].
log4j: Category dev set to DEBUG
log4j: Parsing appender named "dev".
log4j: Parsing layout options for "dev".
log4j: Setting property [conversionPattern] to [%d %X{RemoteHost} %C %-5p %c - %
m%n].
log4j: End of parsing for "dev".
log4j: Setting property [maxFileSize] to [10KB].
log4j: Setting property [file] to [C:/logs/dev_01.log].
log4j: Setting property [maxBackupIndex] to [100].
log4j: setFile called: C:/logs/dev_01.log, true
log4j: setFile ended
log4j: Parsed "dev" options.
log4j: Handling log4j.additivity.dev=[null]
log4j: Finished configuring.
log4j: rolling over count=10260
log4j: maxBackupIndex=100
log4j: Renaming file C:\logs\dev_01.log.3 to C:\logs\dev_01.log.4
log4j: Renaming file C:\logs\dev_01.log.2 to C:\logs\dev_01.log.3
log4j: Renaming file C:\logs\dev_01.log.1 to C:\logs\dev_01.log.2
log4j: Renaming file C:\logs\dev_01.log to C:\logs\dev_01.log.1
log4j: setFile called: C:/logs/dev_01.log, false
log4j: setFile ended
log4j: Parsing for [root] with value=[DEBUG].
log4j: Level token is [DEBUG].
log4j: Category root set to DEBUG
log4j: Parsing for [dev] with value=[DEBUG, dev].
log4j: Level token is [DEBUG].
log4j: Category dev set to DEBUG
log4j: Parsing appender named "dev".
log4j: Parsing layout options for "dev".
log4j: Setting property [conversionPattern] to [%d %X{RemoteHost} %C %-5p %c - %
m%n].
log4j: End of parsing for "dev".
log4j: Setting property [maxFileSize] to [10KB].
log4j: Setting property [file] to [C:/logs/dev_01.log].
log4j: Setting property [maxBackupIndex] to [100].
log4j: setFile called: C:/logs/dev_01.log, true
log4j: setFile ended
log4j: Parsed "dev" options.
log4j: Handling log4j.additivity.dev=[null]
log4j: Finished configuring.
So it seems that it did try to rename the file.
Now, I don't know where the println I added in renameFile() is gone.
I think there is actually some debug missing in tomcat, but I don't know why. I've been using it for over one year, and still need to learn a lot about how to configure it.
I cleaned up the data a bit to make it more readable. I hope I didn't cut out any piece of important data inadvertently.
Any idea?
Laurent
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]