aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-01-25 07:39:13 +0000
committerRob Austein <sra@hactrn.net>2013-01-25 07:39:13 +0000
commit10b6151727182e7caa7fdfad2d67e406e3afc726 (patch)
treecb4034b74813bb6374bdd3cb226f022bb45a1440
parent95d3eb56c11c96b2a3c0890b1abfb3f9826cdd9f (diff)
Clean up and extend rpki.log.init() to support things like letting the
GUI provide its own file-like object as a destination for logging. See #396. svn path=/trunk/; revision=4979
-rw-r--r--rpkid/rpki/adns.py2
-rw-r--r--rpkid/rpki/irdbd.py5
-rw-r--r--rpkid/rpki/log.py60
-rw-r--r--rpkid/rpki/old_irdbd.py5
-rw-r--r--rpkid/rpki/pubd.py6
-rw-r--r--rpkid/rpki/rootd.py5
-rw-r--r--rpkid/rpki/rpkic.py4
-rw-r--r--rpkid/rpki/rpkid.py5
-rw-r--r--rpkid/tests/smoketest.py3
-rw-r--r--rpkid/tests/yamlconf.py3
-rw-r--r--rpkid/tests/yamltest.py3
11 files changed, 57 insertions, 44 deletions
diff --git a/rpkid/rpki/adns.py b/rpkid/rpki/adns.py
index 736d793a..d221f01e 100644
--- a/rpkid/rpki/adns.py
+++ b/rpkid/rpki/adns.py
@@ -329,7 +329,7 @@ class getaddrinfo(object):
if __name__ == "__main__":
- rpki.log.use_syslog = False
+ rpki.log.init("test-adns", use_syslog = False)
print "Some adns tests may take a minute or two, please be patient"
class test_getaddrinfo(object):
diff --git a/rpkid/rpki/irdbd.py b/rpkid/rpki/irdbd.py
index dafdaff9..d67027ff 100644
--- a/rpkid/rpki/irdbd.py
+++ b/rpkid/rpki/irdbd.py
@@ -151,6 +151,7 @@ class main(object):
cfg_file = None
foreground = False
profile = None
+ use_syslog = True
opts, argv = getopt.getopt(sys.argv[1:], "c:dfhp:?",
["config=", "debug", "foreground", "help", "profile="])
@@ -161,7 +162,7 @@ class main(object):
if o in ("-c", "--config"):
cfg_file = a
elif o in ("-d", "--debug"):
- rpki.log.use_syslog = False
+ use_syslog = False
foreground = True
elif o in ("-f", "--foreground"):
foreground = True
@@ -170,7 +171,7 @@ class main(object):
if argv:
raise rpki.exceptions.CommandParseFailure("Unexpected arguments %s" % argv)
- rpki.log.init("irdbd")
+ rpki.log.init("irdbd", use_syslog = use_syslog)
self.cfg = rpki.config.parser(cfg_file, "irdbd")
self.cfg.set_global_flags()
diff --git a/rpkid/rpki/log.py b/rpkid/rpki/log.py
index 2b48cb6d..38642999 100644
--- a/rpkid/rpki/log.py
+++ b/rpkid/rpki/log.py
@@ -49,11 +49,6 @@ except ImportError:
enable_trace = False
-## @var use_syslog
-# Whether to use syslog
-
-use_syslog = True
-
## @var show_python_ids
# Whether __repr__() methods should show Python id numbers
@@ -80,47 +75,55 @@ use_setproctitle = True
proctitle_extra = os.path.basename(os.getcwd())
-tag = ""
-pid = 0
-
-def init(ident = "rpki", flags = syslog.LOG_PID, facility = syslog.LOG_DAEMON):
+def init(ident = "rpki", flags = syslog.LOG_PID, facility = syslog.LOG_DAEMON, use_syslog = None, log_file = sys.stderr, tag_log_lines = True):
"""
Initialize logging system.
"""
+ # If caller didn't say whether to use syslog, use log file if user supplied one, otherwise use syslog
+
+ if use_syslog is None:
+ use_syslog = log_file is sys.stderr
+
+ logger.use_syslog = use_syslog
+ logger.tag_log_lines = tag_log_lines
+
if use_syslog:
- return syslog.openlog(ident, flags, facility)
+ syslog.openlog(ident, flags, facility)
+
else:
- global tag, pid
- tag = ident
- pid = os.getpid()
+ logger.tag = ident
+ logger.pid = os.getpid()
+ logger.log_file = log_file
+
if ident and have_setproctitle and use_setproctitle:
if proctitle_extra:
setproctitle.setproctitle("%s (%s)" % (ident, proctitle_extra))
else:
setproctitle.setproctitle(ident)
-def set_trace(enable):
- """
- Enable or disable call tracing.
- """
-
- global enable_trace
- enable_trace = enable
-
class logger(object):
"""
Closure for logging.
"""
+ use_syslog = True
+ tag = ""
+ pid = 0
+ log_file = sys.stderr
+
def __init__(self, priority):
self.priority = priority
def __call__(self, message):
- if use_syslog:
- return syslog.syslog(self.priority, message)
+ if self.use_syslog:
+ syslog.syslog(self.priority, message)
+ elif self.tag_log_lines:
+ self.log_file.write("%s %s[%d]: %s\n" % (time.strftime("%F %T"), self.tag, self.pid, message))
+ self.log_file.flush()
else:
- sys.stderr.write("%s %s[%d]: %s\n" % (time.strftime("%F %T"), tag, pid, message))
+ self.log_file.write(message + "\n")
+ self.log_file.flush()
error = logger(syslog.LOG_ERR)
warn = logger(syslog.LOG_WARNING)
@@ -128,6 +131,15 @@ note = logger(syslog.LOG_NOTICE)
info = logger(syslog.LOG_INFO)
debug = logger(syslog.LOG_DEBUG)
+
+def set_trace(enable):
+ """
+ Enable or disable call tracing.
+ """
+
+ global enable_trace
+ enable_trace = enable
+
def trace():
"""
Execution trace -- where are we now, and whence came we here?
diff --git a/rpkid/rpki/old_irdbd.py b/rpkid/rpki/old_irdbd.py
index 6cc6cb14..dd7fc13e 100644
--- a/rpkid/rpki/old_irdbd.py
+++ b/rpkid/rpki/old_irdbd.py
@@ -210,6 +210,7 @@ class main(object):
time.tzset()
cfg_file = None
+ use_syslog = True
opts, argv = getopt.getopt(sys.argv[1:], "c:dh?", ["config=", "debug", "help"])
for o, a in opts:
@@ -219,11 +220,11 @@ class main(object):
if o in ("-c", "--config"):
cfg_file = a
elif o in ("-d", "--debug"):
- rpki.log.use_syslog = False
+ use_syslog = False
if argv:
raise rpki.exceptions.CommandParseFailure, "Unexpected arguments %s" % argv
- rpki.log.init("irdbd")
+ rpki.log.init("irdbd", use_syslog = use_syslog)
self.cfg = rpki.config.parser(cfg_file, "irdbd")
diff --git a/rpkid/rpki/pubd.py b/rpkid/rpki/pubd.py
index a6d8f83f..b026bfff 100644
--- a/rpkid/rpki/pubd.py
+++ b/rpkid/rpki/pubd.py
@@ -70,6 +70,8 @@ class main(object):
self.foreground = False
self.irbe_cms_timestamp = None
+ use_syslog = True
+
opts, argv = getopt.getopt(sys.argv[1:], "c:dfhp:?",
["config=", "debug", "foreground", "help", "profile="])
for o, a in opts:
@@ -79,7 +81,7 @@ class main(object):
elif o in ("-c", "--config"):
self.cfg_file = a
elif o in ("-d", "--debug"):
- rpki.log.use_syslog = False
+ use_syslog = False
self.foreground = True
elif o in ("-f", "--foreground"):
self.foreground = True
@@ -88,7 +90,7 @@ class main(object):
if argv:
raise rpki.exceptions.CommandParseFailure, "Unexpected arguments %s" % argv
- rpki.log.init("pubd")
+ rpki.log.init("pubd", use_syslog = use_syslog)
self.cfg = rpki.config.parser(self.cfg_file, "pubd")
self.cfg.set_global_flags()
diff --git a/rpkid/rpki/rootd.py b/rpkid/rpki/rootd.py
index 6da7081b..a74194ea 100644
--- a/rpkid/rpki/rootd.py
+++ b/rpkid/rpki/rootd.py
@@ -332,6 +332,7 @@ class main(object):
time.tzset()
self.cfg_file = None
+ use_syslog = True
opts, argv = getopt.getopt(sys.argv[1:], "c:dfh?", ["config=", "debug", "foreground", "help"])
for o, a in opts:
@@ -341,7 +342,7 @@ class main(object):
elif o in ("-c", "--config"):
self.cfg_file = a
elif o in ("-d", "--debug"):
- rpki.log.use_syslog = False
+ use_syslog = False
self.foreground = True
elif o in ("-f", "--foreground"):
self.foreground = True
@@ -349,7 +350,7 @@ class main(object):
if argv:
raise rpki.exceptions.CommandParseFailure, "Unexpected arguments %s" % argv
- rpki.log.init("rootd")
+ rpki.log.init("rootd", use_syslog = use_syslog)
self.cfg = rpki.config.parser(self.cfg_file, "rootd")
self.cfg.set_global_flags()
diff --git a/rpkid/rpki/rpkic.py b/rpkid/rpki/rpkic.py
index f00e15b5..b7e340ab 100644
--- a/rpkid/rpki/rpkic.py
+++ b/rpkid/rpki/rpkic.py
@@ -73,8 +73,6 @@ class main(rpki.cli.Cmd):
os.environ["TZ"] = "UTC"
time.tzset()
- rpki.log.use_syslog = False
-
self.cfg_file = None
self.handle = None
profile = None
@@ -105,7 +103,7 @@ class main(rpki.cli.Cmd):
self.main()
def main(self):
- rpki.log.init("rpkic")
+ rpki.log.init("rpkic", use_syslog = False)
self.read_config()
rpki.cli.Cmd.__init__(self, self.argv)
diff --git a/rpkid/rpki/rpkid.py b/rpkid/rpki/rpkid.py
index 7e6f9151..0fd9f7bc 100644
--- a/rpkid/rpki/rpkid.py
+++ b/rpkid/rpki/rpkid.py
@@ -75,6 +75,7 @@ class main(object):
self.irbe_cms_timestamp = None
self.task_current = None
self.task_queue = []
+ use_syslog = True
opts, argv = getopt.getopt(sys.argv[1:], "c:dfhp:?",
["config=", "debug", "foreground", "help", "profile="])
@@ -83,7 +84,7 @@ class main(object):
print __doc__
sys.exit(0)
elif o in ("-d", "--debug"):
- rpki.log.use_syslog = False
+ use_syslog = False
self.foreground = True
elif o in ("-f", "--foreground"):
self.foreground = True
@@ -94,7 +95,7 @@ class main(object):
if argv:
raise rpki.exceptions.CommandParseFailure, "Unexpected arguments %s" % argv
- rpki.log.init("rpkid")
+ rpki.log.init("rpkid", use_syslog = use_syslog)
self.cfg = rpki.config.parser(self.cfg_file, "rpkid")
self.cfg.set_global_flags()
diff --git a/rpkid/tests/smoketest.py b/rpkid/tests/smoketest.py
index 67e31fed..33f73091 100644
--- a/rpkid/tests/smoketest.py
+++ b/rpkid/tests/smoketest.py
@@ -184,8 +184,7 @@ def main():
Main program.
"""
- rpki.log.use_syslog = False
- rpki.log.init(smoketest_name)
+ rpki.log.init(smoketest_name, use_syslog = False)
rpki.log.info("Starting")
pubd_process = None
diff --git a/rpkid/tests/yamlconf.py b/rpkid/tests/yamlconf.py
index f9f69ba1..ac1c3292 100644
--- a/rpkid/tests/yamlconf.py
+++ b/rpkid/tests/yamlconf.py
@@ -611,8 +611,7 @@ def main():
quiet = args.quiet
yaml_file = args.yaml_file
- rpki.log.use_syslog = False
- rpki.log.init("yamlconf")
+ rpki.log.init("yamlconf", use_syslog = False)
# Allow optional config file for this tool to override default
# passwords: this is mostly so that I can show a complete working
diff --git a/rpkid/tests/yamltest.py b/rpkid/tests/yamltest.py
index 3006a6fa..506b68f2 100644
--- a/rpkid/tests/yamltest.py
+++ b/rpkid/tests/yamltest.py
@@ -565,8 +565,7 @@ try:
if pidfile is not None:
open(pidfile, "w").write("%s\n" % os.getpid())
- rpki.log.use_syslog = False
- rpki.log.init("yamltest")
+ rpki.log.init("yamltest", use_syslog = False)
yaml_file = argv[0] if argv else "smoketest.1.yaml"