You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by "PR-Guest3, Basel {~Basel}" <BA...@Roche.COM> on 2002/10/29 16:05:39 UTC

Erased/deleted logfile

Hi all, I already posted earlier about this ...

I am trying to create an Appender which would recreate a file if it has been deleted by some crazy root user.
I extended the FileAppender and overrode its subAppend() method to accomplish this, but I am always getting 
java.lang.NullPointerException
        at java.io.File.<init>(File.java:180)
        at com.roche.research.irci.score.log.FileAppenderCreator.subAppend(FileAppenderCreator.java:22)
        at org.apache.log4j.WriterAppender.append(WriterAppender.java:150)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
        at org.apache.log4j.Category.callAppenders(Category.java:187)
        at org.apache.log4j.Category.forcedLog(Category.java:372)
        at org.apache.log4j.Category.debug(Category.java:241)

Below lies my poor code:

public class FileAppenderCreator extends FileAppender{

    public FileAppenderCreator(){
    }

    protected  void subAppend(LoggingEvent event) {

        try {
            File file = new File(this.getFile());
            if(file.createNewFile()) {
                LogLog.debug("New File created");
                FileWriter fw = new FileWriter(file);
                setWriter(fw);
            }
        } catch (IOException ex) {
            LogLog.error("Error trying to create a log file in FileAppenderCreater.", ex);
        }

        this.qw.write(this.layout.format(event));

        if(layout.ignoresThrowable()) {
            String[] s = event.getThrowableStrRep();
            if (s != null) {
                int len = s.length;
                for(int i = 0; i < len; i++) {
                    this.qw.write(s[i]);
                    this.qw.write(Layout.LINE_SEP);
                }
            }
        }

        if(this.immediateFlush) {
            this.qw.flush();
        }
    }
}


Can someone help ?

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>