Hi all,
I am successfully using the following chunk of groovy code at the top of 
various console scripts in order to preserve the various stdout/strerr output 
to a log file - as well as on the console.
There are a couple of points.  First it uses SystemOutputInterceptor - but this 
class appears to be depreciated.  Is there something coming to replace it?
Second, I would like to be able to print the command line as entered by the 
user who provoked the script. The nearest I could get was to print the args 
list (as below).  Is there a simple way of obtaining the actual command entered 
by the user so it can be included with the log?  I was hoping the CliBuilder 
might have a pretty print feature, but I can't see one.

import groovy.ui.SystemOutputInterceptor

def dateString = new Date().format('yyyyMMMdd-HHmmss')
String getScriptFileName() {
  new 
File(getClass().protectionDomain.codeSource.location.path).name.toLowerCase().replace(/\.groovy/,
 '')
}
new File('./logs').mkdir()
def logOutput = new PrintWriter(new 
File("./logs/${getScriptFileName()}-${dateString}.log"))
def myLoger = new SystemOutputInterceptor( { Object... args -> logOutput << 
args[-1]; logOutput.flush(); true } )
myLoger.start()
if (args) {
  print "Parameters provided:"
  args.each {print " " + it}
  println ""
}

println  "this is printed to the console window and to the log file - like a 
'tee' feature.  Really useful"


Merlin Beedell
0800 280 0525 / +44 (0)207 045 0520
DDI: +44 (0)207 045 0528
Mob: +44 (0)7876 226865
Cryoserver: A focused, flexible email archive delivered by experts

Reply via email to