diff options
author | Rob Austein <sra@hactrn.net> | 2013-01-25 07:39:13 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2013-01-25 07:39:13 +0000 |
commit | 10b6151727182e7caa7fdfad2d67e406e3afc726 (patch) | |
tree | cb4034b74813bb6374bdd3cb226f022bb45a1440 | |
parent | 95d3eb56c11c96b2a3c0890b1abfb3f9826cdd9f (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.py | 2 | ||||
-rw-r--r-- | rpkid/rpki/irdbd.py | 5 | ||||
-rw-r--r-- | rpkid/rpki/log.py | 60 | ||||
-rw-r--r-- | rpkid/rpki/old_irdbd.py | 5 | ||||
-rw-r--r-- | rpkid/rpki/pubd.py | 6 | ||||
-rw-r--r-- | rpkid/rpki/rootd.py | 5 | ||||
-rw-r--r-- | rpkid/rpki/rpkic.py | 4 | ||||
-rw-r--r-- | rpkid/rpki/rpkid.py | 5 | ||||
-rw-r--r-- | rpkid/tests/smoketest.py | 3 | ||||
-rw-r--r-- | rpkid/tests/yamlconf.py | 3 | ||||
-rw-r--r-- | rpkid/tests/yamltest.py | 3 |
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" |