]> git.ipfire.org Git - pakfire.git/commitdiff
builder: Add a simple console log handler
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Apr 2021 15:25:30 +0000 (15:25 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Apr 2021 15:25:30 +0000 (15:25 +0000)
This is quite similar to the stream handler but writes error messages to
stderr and everything else to stdout.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/builder.py

index 737568f972751d32c363d9f0468d2e9b55b56fd5..9b3e2ccf9af67ab5d24cc0a91562dde28122a85c 100644 (file)
@@ -21,6 +21,7 @@
 
 import glob
 import os
+import sys
 import uuid
 
 from . import _pakfire
@@ -122,9 +123,8 @@ class Builder(object):
                l.setLevel(logging.DEBUG)
 
                # Print everything to the console
-               l.addHandler(
-                       logging.StreamHandler(),
-               )
+               console = ConsoleHandler()
+               l.addHandler(console)
 
                # If we have a log file, we write INFO and higher level messages to it
                # using the build formatter which adds a timestamp
@@ -260,3 +260,19 @@ class BuilderContext(object):
                # Enter the shell
                self.pakfire.execute(["/usr/bin/bash", "--login"],
                        environ=self.environ, enable_network=True, interactive=True)
+
+
+class ConsoleHandler(logging.Handler):
+       """
+               This simply writes everything to the console it receives.
+       """
+       def emit(self, record):
+               try:
+                       msg = self.format(record)
+
+                       if record.levelno >= logging.ERROR:
+                               sys.stderr.write("%s\n" % msg)
+                       else:
+                               sys.stdout.write("%s\n" % msg)
+               except Exception:
+                       self.handleError(record)