Question

Im configuring log4j appenders programtically to create different files at runtime. I am able to create files and i want to them to start fresh on each run.

    String logfile = ("/home/Dev/" + hostname + id);
    Logger logger =Logger.getLogger(testImpl.class);
    RollingFileAppender fileAppender=null;
    logger.setLevel(Level.DEBUG);
    PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
        try
        {
            fileAppender = new RollingFileAppender(layout, logfile);
            logger.addAppender(fileAppender);
            fileAppender.setAppend(false);
            logger.setAdditivity(false);
        }
        catch (IOException e)
        {
            System.out.println("Failed to add appender !!");
        }
        logger.error("Message Number :"+i);
        LogManager.resetConfiguration();

eventhough im setting

    fileAppender.setAppend(false);

Im not able to start log files fresh.

Was it helpful?

Solution

I encounnted the same issue. Neither RollingFileAppender nor FileAppender works if you call this constructor, which uses append default value(true) to open output stream. I think later setAppend(false) can't be work if it doesn't reopen the stream.

Finally I work it out with the constructor:

fileAppender = new RollingFileAppender(layout, logfile, false);

Good luck!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top