forked from mirrors/gecko-dev
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
# 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)
|