Now I'm trying this, but I'm getting a NullPointerException on the first start()

        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        lc.reset();
       
        //Setup Time Based File Naming and Triggering Policy
        SizeAndTimeBasedFNATP<ILoggingEvent> timeBasedTriggering = new SizeAndTimeBasedFNATP<ILoggingEvent>();
        timeBasedTriggering.setContext(lc);
        timeBasedTriggering.setMaxFileSize("500MB");
       
        //Setup Time Based Rolling Policy
        TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
        rollingPolicy.setContext(lc);
        rollingPolicy.setFileNamePattern("bidderserver-%d{yyyy-MM-dd-HH:mm:ss}-"+hostname+"-ip.%i.log");
        rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(timeBasedTriggering);

        //Set the rolling policy as a parent to the triggering policy
        timeBasedTriggering.setTimeBasedRollingPolicy(rollingPolicy);
       
        //Set up a Pattern
        PatternLayout layout = new PatternLayout();
        layout.setPattern("%d{yyyy-MM-dd HH:mm:ss},%t %m%n");
       
        //Set up the Appender
        RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
        rollingFileAppender.setContext(lc);
        rollingFileAppender.setAppend(true);
        rollingFileAppender.setBufferedIO(true);
        rollingFileAppender.setBufferSize(16000000);
        rollingFileAppender.setPrudent(false);
        rollingFileAppender.setImmediateFlush(false);
        rollingFileAppender.setLayout(layout);
       
        //Start!
        timeBasedTriggering.start();
        rollingPolicy.start();
        layout.start();
        rollingFileAppender.start();

On Wed, Sep 9, 2009 at 11:17 AM, Nitro Star <nitrostar1@gmail.com> wrote:
Hi!

I have been playing with logback for a couple of days and find a lot of its functionality amazing! I have a couple of questions that I was wondering if I could address!

I'm using logback to log information about a java server that I'm setting up. I want my log files to change every half hour and to never exceed 500MB. I would also like the logging system to cache 16MB of data before flushing to disk! Finally, I want the fileNamePattern to depend on the hostname where I'm running the server!

So this are my questions:
a. I have found a way for the log files to change every hour, but not every half hour... Is there a way to do this? Is there a way I can define my own RollingPolicy?
b. Is there a way for me to define the fileNamePattern somewhere else other than in the logback.xml file?
c. Is there a flush() function I can call when my server exists?

For b. I have tried something like:

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        Logger logger = lc.getLogger("ROOT");
       
        RollingFileAppender<ILoggingEvent> app = (RollingFileAppender<ILoggingEvent>)logger.getAppender("RootFileAppender");
        RollingPolicyBase rollingPolicy = (RollingPolicyBase)app.getRollingPolicy();
        rollingPolicy.stop();
        rollingPolicy.setFileNamePattern("bidderserver-%d{yyyy-MM-dd-HH:mm:ss}-"+hostname+"-ip.%i.log");
        rollingPolicy.start();


But that doesn't seem to work :(

I'm attaching my current logback.xml file.

Any and all help would be much appreciated!


Also, I tried visiting #qos.ch in freenode, but there's noone there except me!

Thanks again,
Daniel