/usr/share/pyshared/ubuntutools/logger.py is in ubuntu-dev-tools 0.153.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #
# logger.py - A simple logging helper class
#
# Copyright (C) 2010, Benjamin Drung <bdrung@debian.org>
#
# Permission to use, copy, modify, and/or distribute this software
# for any purpose with or without fee is hereby granted, provided
# that the above copyright notice and this permission notice appear
# in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
import os
import sys
def escape_arg(arg):
"""Shell-escpae arg, if necessary.
Fairly simplistic, doesn't escape anything except whitespace.
"""
if ' ' not in arg:
return arg
return '"%s"' % arg.replace('\\', r'\\').replace('"', r'\"')
class Logger(object):
script_name = os.path.basename(sys.argv[0])
verbose = False
stdout = sys.stdout
stderr = sys.stderr
@classmethod
def _print(cls, format_, message, args=None, stderr=False):
if args:
message = message % args
stream = cls.stderr if stderr else cls.stdout
stream.write((format_ + "\n") % (cls.script_name, message))
@classmethod
def command(cls, cmd):
if cls.verbose:
cls._print("%s: I: %s", " ".join(escape_arg(arg) for arg in cmd))
@classmethod
def debug(cls, message, *args):
if cls.verbose:
cls._print("%s: D: %s", message, args, stderr=True)
@classmethod
def error(cls, message, *args):
cls._print("%s: Error: %s", message, args, stderr=True)
@classmethod
def warn(cls, message, *args):
cls._print("%s: Warning: %s", message, args, stderr=True)
@classmethod
def info(cls, message, *args):
if cls.verbose:
cls._print("%s: I: %s", message, args)
@classmethod
def normal(cls, message, *args):
cls._print("%s: %s", message, args)
@classmethod
def set_verbosity(cls, verbose):
cls.verbose = verbose
|