# Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ Error and information logging for IDL """ import sys class IDLLog(object): """Captures and routes logging output. Caputres logging output and/or sends out via a file handle, typically stdout or stderr. """ def __init__(self, name, out): if name: self._name = '%s : ' % name else: self._name = '' self._out = out self._capture = False self._console = True self._log = [] def Log(self, msg): if self._console: line = "%s\n" % (msg) self._out.write(line) if self._capture: self._log.append(msg) def LogLine(self, filename, lineno, pos, msg): if self._console: line = "%s(%d) : %s%s\n" % (filename, lineno, self._name, msg) self._out.write(line) if self._capture: self._log.append(msg) def SetConsole(self, enable): self._console = enable def SetCapture(self, enable): self._capture = enable def DrainLog(self): out = self._log self._log = [] return out ErrOut = IDLLog('Error', sys.stderr) WarnOut = IDLLog('Warning', sys.stdout) InfoOut = IDLLog('', sys.stdout)