######################################################################## ### FILE: logging.mod ### PURPOSE: Message logging ### SCOPE: Top Level ### HISTORY: ### 2011-01-14 Tor Slettnes ### Created ### ### Copyrights (C) 2011 Life Technologies. All rights reserved. ######################################################################## ### Start logger PVAR LaunchCount $[ ${LaunchCount:-0} + 1 ] PERSIST SET LogPrefix $[ "%06d"%${LaunchCount} ] VAR LogFolder LOGS: FILe:MKDIR -createParents ${LogFolder} LOGG:NEW InstrumentLog -format='${localtime} ${topic:20}: ${message}' LOGG:LOG -log=InstrumentLog \ "$(SYSTem:PRODuct?) Instrument Server version $(SYSTem:VERSion?) build $(SYSTem:BUILD?) starting" LOGG:ADD -log=InstrumentLog -allowExisting * TRY LOGG:FILe -append -log=InstrumentLog -rotateInterval=21600 -rotateAlignment=Local \ ${LogFolder}/${LogPrefix}-'${localdate}-${localhour}-${timezone}'.log WARNING "Unable to open new log file in $(FILe:PATH? ${LogFolder}): [${error}] ${message}" ### Method to clear log files LOGGer:DEFine ExpireFILes $expiration$=$[ 60 * 60 * 24 * 30 ] $compression$=$[ 60 * 60 * 12 ] $folder$=${LogFolder} INFO "Checking for old log files..." SET RemoveCutOff $[ $(:SYSTem:TIME?) - $expiration$ ] SET CompressCutOff $[ $(:SYSTem:TIME?) - $compression$ ] SET LogFiles $(:FILe:LIST? -ignoreMissing -type=files $folder$) ITERate -key=filename -delimiter="\n" ${LogFiles} IF ${#filename} SET filetime $(:FILe:TIME? "${filename}") IF $[ ${filetime} < ${RemoveCutOff} ] INFO "Removing old log file ${filename}..." :FILe:REMOVE -recursive ${filename} ELIF $[ not "${filename}".endswith('.gz') and ${filetime} < ${CompressCutOff} ] INFO "Compressing file ${filename}..." :FILE:GZIP -preservetime ${filename} ### Remove log files older than 14 days SCHedule+ PruneLogs $[ 6 * 60 * 60 ] -align=local TRY LOGGer:EXPireFILes WARNing "Failed to rotate logs: [${error}] ${message}"