aboutsummaryrefslogtreecommitdiff
path: root/rpki/log.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-05-22 19:31:03 +0000
committerRob Austein <sra@hactrn.net>2014-05-22 19:31:03 +0000
commit13134a0f8376c0cdffde344af319320257f39dbe (patch)
tree947f431dcaa99da9a1e66b73d7ea508bd0811bc7 /rpki/log.py
parentc9242982534fadbdf13d81cd119285899a16ed42 (diff)
Initial conversion to Python logging system. Still very crude.
svn path=/trunk/; revision=5835
Diffstat (limited to 'rpki/log.py')
-rw-r--r--rpki/log.py66
1 files changed, 31 insertions, 35 deletions
diff --git a/rpki/log.py b/rpki/log.py
index a7990d5e..9f59444f 100644
--- a/rpki/log.py
+++ b/rpki/log.py
@@ -21,10 +21,11 @@
Logging facilities for RPKI libraries.
"""
-import syslog
-import sys
import os
+import sys
import time
+import logging
+import logging.handlers
import traceback as tb
try:
@@ -71,14 +72,31 @@ def init(ident = "rpki", use_syslog = True):
Initialize logging system.
"""
- logger.use_syslog = use_syslog
+ # This will want tweaking after basic conversion to logging package
+ # is finished. For now, keep it simple.
+ #
+ # Should also support LoggingAdapters, rotating log files,
+ # configurable log levels, and other forms of entertainment.
+
+ format = ident + "[%(process)d] %(message)s"
+ if not use_syslog:
+ format = "%(asctime)s " + format
- if use_syslog:
- syslog.openlog(ident, syslog.LOG_PID, syslog.LOG_DAEMON)
+ formatter = logging.Formatter(format, "%Y-%m-%dT%H:%M:%SZ")
+ formatter.converter = time.gmtime
+ if not use_syslog:
+ handler = logging.StreamHandler()
+ elif os.path.exists("/dev/log"):
+ handler = logging.handlers.SysLogHandler("/dev/log")
else:
- logger.tag = ident
- logger.pid = os.getpid()
+ handler = logging.handlers.SysLogHandler()
+
+ handler.setFormatter(formatter)
+ logging.root.addHandler(handler)
+
+ #logging.root.setLevel(args.log_level)
+ logging.root.setLevel(logging.DEBUG)
if ident and have_setproctitle and use_setproctitle:
if proctitle_extra:
@@ -86,36 +104,14 @@ def init(ident = "rpki", use_syslog = True):
else:
setproctitle.setproctitle(ident)
-# rpki.http.log_method() knows about the rpki.log.logger class, and
-# will require cleanup when this changes. For that case, we may want
-# to use the log() function/method from Python logging package, since
-# it lets us pass a level value; we'd default the severity to DEBUG,
-# but allow that to be overriden, producing the effect we have now.
-class logger(object):
- """
- Closure for logging.
- """
-
- use_syslog = True
- tag = ""
- pid = 0
+# Temporary hack during transition. In the long run, other modules
+# should call the logging system directly. I think.
- def __init__(self, priority):
- self.priority = priority
-
- def __call__(self, message):
- if self.use_syslog:
- syslog.syslog(self.priority, message)
- else:
- sys.stderr.write("%s %s[%d]: %s\n" % (time.strftime("%F %T"), self.tag, self.pid, message))
- sys.stderr.flush()
-
-error = logger(syslog.LOG_ERR) # logging.ERROR
-warn = logger(syslog.LOG_WARNING) # logging.WARNING
-note = logger(syslog.LOG_NOTICE) # logging.INFO, since there is no logging.NOTICE
-info = logger(syslog.LOG_INFO) # logging.INFO
-debug = logger(syslog.LOG_DEBUG) # logging.DEBUG
+error = logging.error
+warn = logging.warning
+info = logging.info
+debug = logging.debug
def set_trace(enable):