[logback-user] logback and manual rollover (from java)

lgonggr lgonggrijp at hotmail.com
Fri Jul 23 10:29:59 CEST 2010


Hi,

I used log4j before and I triggered my RollingFileAppender rollover()
manually in some places (batches). I need to create seperate logfiles for
each batch run.
I want it to rollover using the FixedWindowRollingPolicy if the logfile
exceeds 10MB and at the start of each batch run.
I've migrated to logback now and it works well, but I can't figure out how
to rollover my RollingFileAppender manually.

What I have now :
  <appender name="EntityToCSV"
class="ch.qos.logback.core.rolling.RollingFileAppender">
     <File>/home/tomcat/overname_test_logs/EntityToCSV.log</File>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}: %m%n</pattern>
    </encoder>
    <rollingPolicy
class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <maxIndex>9</maxIndex>
     
<FileNamePattern>/home/tomcat/overname_test_logs/EntityToCSV.log.%i</FileNamePattern>
    </rollingPolicy>
    <triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
  </appender>

  <logger name="nl.realworks.apps.overname.EntityToCSV" level="INFO">
    <appender-ref ref="EntityToCSV"/>
  </logger>

in EntityToCSV.java :

	private static final Logger LOGGER = 
		LoggerFactory.getLogger(EntityToCSV.class);

       public static void main(String[] args) throws Exception {
		
		OvernameUtils.manualRollover(LOGGER);
                 
                 // do stuff and log it

in OvernameUtils.java :

	public static void manualRollover(Logger logger) {
		Utils.assertNotNull("logger is null.", logger);
		if (logger instanceof RollingFileAppender) { // <--- FAIL !
			try {
				((RollingFileAppender)logger).rollover();
			} catch (Exception e) {
				logger.error("rollover failed.", e);
			}
			return;
		}
		String message = logger.getName() + 
			" is not an instance of RollingFileAppender.";
		logger.error(message, new RuntimeException(message));
	}

This won't work of course as Logger != Appender. I have no idea how to get
from the Logger to its Appender(s). In log4j you could just do getAppender()
but this is not possible with org.slf4j.Logger

Perhaps this is a totally wrong approach. Any tips would be greatly
appreciated.

-- 
View this message in context: http://old.nabble.com/logback-and-manual-rollover-%28from-java%29-tp29237145p29237145.html
Sent from the Logback User mailing list archive at Nabble.com.



More information about the Logback-user mailing list