diff options
Diffstat (limited to 'rpkid/rpki/log.py')
-rw-r--r-- | rpkid/rpki/log.py | 60 |
1 files changed, 36 insertions, 24 deletions
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? |