|
Radek Novacek |
375cedb |
commit af7d47978d6e141ca01e925fce02aa73a14baf69
|
|
Radek Novacek |
375cedb |
Author: Radek Novacek <rnovacek@redhat.com>
|
|
Radek Novacek |
375cedb |
Date: Tue Nov 27 12:35:33 2012 +0100
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
Use journal for logging when available
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
diff --git a/log.py b/log.py
|
|
Radek Novacek |
375cedb |
index e415001..bc85544 100644
|
|
Radek Novacek |
375cedb |
--- a/log.py
|
|
Radek Novacek |
375cedb |
+++ b/log.py
|
|
Radek Novacek |
375cedb |
@@ -24,6 +24,40 @@ import logging.handlers
|
|
Radek Novacek |
375cedb |
import os
|
|
Radek Novacek |
375cedb |
import sys
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
+journalEnabled = False
|
|
Radek Novacek |
375cedb |
+try:
|
|
Radek Novacek |
375cedb |
+ from systemd import journal
|
|
Radek Novacek |
375cedb |
+ journalEnabled = True
|
|
Radek Novacek |
375cedb |
+except ImportError:
|
|
Radek Novacek |
375cedb |
+ pass
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+class NoExceptionFormatter(logging.Formatter):
|
|
Radek Novacek |
375cedb |
+ def format(self, record):
|
|
Radek Novacek |
375cedb |
+ if record.exc_info is not None:
|
|
Radek Novacek |
375cedb |
+ record.exc_text = "\t" + str(record.exc_info[1])
|
|
Radek Novacek |
375cedb |
+ return logging.Formatter.format(self, record)
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+class JournalHandler(logging.Handler):
|
|
Radek Novacek |
375cedb |
+ def __init__(self, level=logging.NOTSET):
|
|
Radek Novacek |
375cedb |
+ logging.Handler.__init__(self, level)
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+ def emit(self, record):
|
|
Radek Novacek |
375cedb |
+ if journalEnabled:
|
|
Radek Novacek |
375cedb |
+ try:
|
|
Radek Novacek |
375cedb |
+ msg = self.format(record)
|
|
Radek Novacek |
375cedb |
+ args = ['MESSAGE=' + record.message,
|
|
Radek Novacek |
375cedb |
+ 'LOGGER=' + record.name,
|
|
Radek Novacek |
375cedb |
+ 'THREAD_NAME=' + record.threadName,
|
|
Radek Novacek |
375cedb |
+ 'CODE_FILE=' + record.pathname,
|
|
Radek Novacek |
375cedb |
+ 'CODE_LINE=%d' % record.lineno,
|
|
Radek Novacek |
375cedb |
+ 'CODE_FUNC=' + record.funcName]
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+ journal.sendv(*args)
|
|
Radek Novacek |
375cedb |
+ except (KeyboardInterrupt, SystemExit):
|
|
Radek Novacek |
375cedb |
+ raise
|
|
Radek Novacek |
375cedb |
+ except:
|
|
Radek Novacek |
375cedb |
+ self.handleError(record)
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
def getLogger(debug, background):
|
|
Radek Novacek |
375cedb |
logger = logging.getLogger("rhsm-app")
|
|
Radek Novacek |
375cedb |
logger.setLevel(logging.DEBUG)
|
|
Radek Novacek |
375cedb |
@@ -56,10 +90,21 @@ def getLogger(debug, background):
|
|
Radek Novacek |
375cedb |
streamHandler.setLevel(logging.WARNING)
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
# Don't print exceptions to stdout in non-debug mode
|
|
Radek Novacek |
375cedb |
- f = logging.Filter()
|
|
Radek Novacek |
375cedb |
- f.filter = lambda record: record.exc_info is None
|
|
Radek Novacek |
375cedb |
- streamHandler.addFilter(f)
|
|
Radek Novacek |
375cedb |
+ streamHandler.setFormatter(NoExceptionFormatter())
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
logger.addHandler(streamHandler)
|
|
Radek Novacek |
375cedb |
|
|
Radek Novacek |
375cedb |
+ if os.getppid() == 1:
|
|
Radek Novacek |
375cedb |
+ # Also log to journal if available
|
|
Radek Novacek |
375cedb |
+ journalHandler = JournalHandler()
|
|
Radek Novacek |
375cedb |
+ if debug:
|
|
Radek Novacek |
375cedb |
+ journalHandler.setLevel(logging.DEBUG)
|
|
Radek Novacek |
375cedb |
+ else:
|
|
Radek Novacek |
375cedb |
+ journalHandler.setLevel(logging.WARNING)
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+ # Don't print exceptions to journal in non-debug mode
|
|
Radek Novacek |
375cedb |
+ journalHandler.setFormatter(NoExceptionFormatter())
|
|
Radek Novacek |
375cedb |
+
|
|
Radek Novacek |
375cedb |
+ logger.addHandler(journalHandler)
|
|
Radek Novacek |
375cedb |
return logger
|