[elbe-devel] [PATCH v2 03/28] ASCIIDocLog compatible with new logging system

Torben Hohn torben.hohn at linutronix.de
Wed Jun 26 14:16:39 CEST 2019


On Fri, Jun 21, 2019 at 07:39:55PM +0200, dion at linutronix.de wrote:
> From: Olivier Dion <dion at linutronix.de>
> 
> By changing the definitions of 'ASCIIDocLog::*', it's possible to use
> the new logging system already, without changing anything else.
> 
> Of course, the logging objects has to be initialize first.
> 
> Signed-off-by: Olivier Dion <dion at linutronix.de>
> ---
>  elbepack/asciidoclog.py | 116 +++++++++++++-----------------------------------
>  1 file changed, 30 insertions(+), 86 deletions(-)
> 
> diff --git a/elbepack/asciidoclog.py b/elbepack/asciidoclog.py
> index ad899feb..322e037d 100644
> --- a/elbepack/asciidoclog.py
> +++ b/elbepack/asciidoclog.py
> @@ -7,117 +7,61 @@
>  
>  import os
>  import sys
> +import logging
>  
> -from elbepack.shellhelper import CommandError, command_out_stderr, command_out
> +from elbepack.shellhelper import get_command_out, do, chroot
>  
> +class CommandError(Exception):
> +    def __init__(self, cmd, returncode):
> +        Exception.__init__(self)
> +        self.returncode = returncode
> +        self.cmd = cmd
>  
> -class LogBase(object):
> -    def __init__(self, fp):
> -        self.fp = fp
> +    def __repr__(self):
> +        return "Error: %d returned from Command %s" % (
> +            self.returncode, self.cmd)
> +
> +
> +
> +class LogBase():

why are you using an old style object ?
please inherit from object in any case.

(except when there are compelling reasons, then please add a comment)


> +    def __init__(self, *args, **kwargs):
> +        pass
>  
>      def printo(self, text=""):
> -        self.fp.write("%s\n" % str(text))
> +        logging.debug(text)
>  
>      def print_raw(self, text):
> -        self.fp.write(text)
> +        self.printo(text)
>  
>      def h1(self, text):
> -        self.printo()
>          self.printo(text)
> -        self.printo("=" * len(str(text)))
> -        self.printo()
>  
>      def h2(self, text):
> -        self.printo()
>          self.printo(text)
> -        self.printo("-" * len(str(text)))
> -        self.printo()
>  
>      def table(self):
> -        self.printo("|=====================================")
> +        pass
>  
>      def verbatim_start(self):
> -        self.printo("---------------------------------------"
> -                    "---------------------------------------")
> +        pass
>  
>      def verbatim_end(self):
> -        self.printo("---------------------------------------"
> -                    "---------------------------------------")
> -        self.printo()
> -
> -    def do(self, cmd, allow_fail=False, stdin=None, env_add=None):
> -
> -        if stdin is None:
> -            self.printo("running cmd +%s+" % cmd)
> -        else:
> -            self.printo("running cmd +%s with STDIN %s+" % (cmd, stdin))
> -
> -        self.verbatim_start()
> -        ret, _ = command_out(cmd, stdin=stdin, output=self.fp, env_add=env_add)
> -        self.verbatim_end()
> -
> -        if ret != 0:
> -            self.printo("Command failed with errorcode %d" % ret)
> -            if not allow_fail:
> -                raise CommandError(cmd, ret)
> -
> -    def chroot(self, directory, cmd, **args):
> -        os.environ["LANG"] = "C"
> -        os.environ["LANGUAGE"] = "C"
> -        os.environ["LC_ALL"] = "C"
> -
> -        chcmd = "chroot %s %s" % (directory, cmd)
> -        self.do(chcmd, **args)
> -
> -    def get_command_out(self, cmd, allow_fail=False):
> -
> -        self.printo("getting output from cmd +%s+" % cmd)
> -
> -        ret, output, stderr = command_out_stderr(cmd)
> -
> -        if stderr:
> -            self.verbatim_start()
> -            self.print_raw(stderr)
> -            self.verbatim_end()
> +        pass
>  
> -        if ret != 0:
> -            self.printo("Command failed with errorcode %d" % ret)
> -            if not allow_fail:
> -                raise CommandError(cmd, ret)
> +    def do(self, cmd, **kwargs):
> +        return do(cmd, **kwargs)
>  
> -        return output
> +    def chroot(self, directory, cmd, **kwargs):
> +        return chroot(directory, cmd, **kwargs)
>  
> +    def get_command_out(self, cmd, **kwargs):
> +        return get_command_out(cmd, **kwargs)
>  
>  class ASCIIDocLog (LogBase):
> -    def __init__(self, fname, append=False):
> -        self.fname = fname
> -        if append:
> -            fp = file(fname, "a", 0)
> -        else:
> -            if os.path.isfile(fname):
> -                os.unlink(fname)
> -            fp = file(fname, "w", 0)
> -
> -        LogBase.__init__(self, fp)
> -
> -    def reset(self):
> -        self.fp.close()
> -        if os.path.isfile(self.fname):
> -            os.unlink(self.fname)
> -        self.fp = file(self.fname, "w", 0)
> -
> +    pass
>  
>  class StdoutLog(LogBase):
> -    def __init__(self):
> -        LogBase.__init__(self, sys.stdout)
> -
> -    def reset(self):
> -        pass
> -
> +    pass
>  
>  class StderrLog(LogBase):
> -    def __init__(self):
> -        LogBase.__init__(self, sys.stderr)
> -
> -    def reset(self):
> -        pass
> +    pass
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel

-- 
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99

Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
can be found here): https://linutronix.de/kontakt/Datenschutz.php

Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen | 
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700 
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner



More information about the elbe-devel mailing list