Thanks Seenivasan, this is extremely helpful – just what I was looking for. Dustin From: Seenivasan Gunabalan <seenivasan.gunabalan@dedalus.eu<mailto:seenivasan.gunabalan@dedalus.eu>> Date: Tuesday, June 4, 2013 7:36 AM To: "basex-talk@mailman.uni-konstanz.de<mailto:basex-talk@mailman.uni-konstanz.de>" <basex-talk@mailman.uni-konstanz.de<mailto:basex-talk@mailman.uni-konstanz.de>> Subject: Re: [basex-talk] Logging Modules/Framework for XQuery module namespace xqlogger = 'urn:sample:xqlogger'; declare variable $xqlogger:LOGDIR as xs:string := "./"; declare variable $xqlogger:LOGFILENAME as xs:string := "a.log"; declare variable $xqlogger:LOGFILESIZE as xs:integer := 100000; (: in bytes :) declare variable $xqlogger:LOGSTATUSMAP := map { 0 := "INFO", 1 := "WARNING", 2 := "ERROR" }; declare function xqlogger:logger($logcode,$logmsg) { let $logstatus := map:get($xqlogger:LOGSTATUSMAP, $logcode) let $logfilepath := concat($xqlogger:LOGDIR,$xqlogger:LOGFILENAME) let $logtime := current-dateTime() return ( file:append-text-lines($logfilepath, concat($logtime,' ',$logstatus,': ',$logmsg)), if(file:size($logfilepath) >= $xqlogger:LOGFILESIZE) then file:move($logfilepath, concat($xqlogger:LOGDIR,file:last-modified($logfilepath),'-',$xqlogger:LOGFILENAME)) else () ) };