Tuesday, 15 February 2011

java - GROOVY + Slf4j + rotation and backup log files -



java - GROOVY + Slf4j + rotation and backup log files -

the next groovy script generate c:\tmp\groovy.log log file slf4j

groovy script works fine , log increased each time utilize log.info/log.debug ... etc

but problem when log file became huge capacity , each day log become more larger

i wonder how add together script capability of rotation mechanism

for illustration need when log file become 100k , log backup zip file ( decrease capacity illustration 10k )

is possible ?

if yes please advice how alter groovy script in order give backup capability

@grab('org.slf4j:slf4j-api:1.6.1') @grab('ch.qos.logback:logback-classic:0.9.28') import org.slf4j.* import groovy.util.logging.slf4j import ch.qos.logback.core.* import ch.qos.logback.classic.encoder.* // utilize annotation inject log field class. @slf4j class family { static { new fileappender().with { name = 'file appender' file = 'c:\\tmp\\groovy.log' context = loggerfactory.getiloggerfactory() encoder = new patternlayoutencoder().with { context = loggerfactory.getiloggerfactory() pattern = "%date{hh:mm:ss.sss} [%thread] %-5level %logger{35} - %msg%n" start() } start() log.addappender(it) } } def father() { log.debug 'car engine hot' log.error 'my auto stuck' } def mother() { log.debug 'dont have water in kitchen' log.error 'cant create cake' } } def helloworld = new family() helloworld.father() helloworld.mother()

you can seek rollingfileappender instead of fileappender , set rollingpolicy need. i.e can seek with:

... @slf4j class family { static { new rollingfileappender().with { name = 'file appender' file = 'c:\\tmp\\groovy.log' // policy roll files rollingpolicy = new timebasedrollingpolicy().with{ context = loggerfactory.getiloggerfactory() // file name pattern rolled files filenamepattern = 'c:\\tmp\\groovy.%date{yyyy-mm-dd}.%i.log' // maximum number of files keeped. maxhistory = 10 timebasedfilenamingandtriggeringpolicy = new sizeandtimebasedfnatp().with{ context = loggerfactory.getiloggerfactory() // max size of each rolled file maxfilesize = '3mb' } } context = loggerfactory.getiloggerfactory() encoder = new patternlayoutencoder().with { context = loggerfactory.getiloggerfactory() pattern = "%date{hh:mm:ss.sss} [%thread] %-5level %logger{35} - %msg%n" start() } start() log.addappender(it) } } ...

hope helps,

java groovy slf4j logback

No comments:

Post a Comment