More data on my problem.

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]



Reply via email to