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();
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