diff options
author | martinko | 2012-12-13 10:23:30 +0000 |
---|---|---|
committer | martinko | 2012-12-13 10:23:30 +0000 |
commit | 7b5fc2f4d0f9de38fae69c13c72723ae5ee8c0fb (patch) | |
tree | 5b7a69e12ad437cba8b820b1db20415bd5617996 | |
parent | 0d75ab176822ea109754549fae1a9ebabd9c522d (diff) |
skytools.skylog: unified SysLogHandler and SysLogHostnameHandler
-rw-r--r-- | python/skytools/skylog.py | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/python/skytools/skylog.py b/python/skytools/skylog.py index c2a6d586..abd4123a 100644 --- a/python/skytools/skylog.py +++ b/python/skytools/skylog.py @@ -241,13 +241,7 @@ class SysLogHandler(logging.handlers.SysLogHandler): _udp_reset = 0 - def emit(self, record): - """ - Emit a record. - - The record is formatted, and then sent to the syslog server. If - exception information is present, it is NOT sent to the server. - """ + def _custom_format(self, record): msg = self.format(record) + '\000' """ We need to convert record level to lowercase, maybe this will @@ -255,13 +249,23 @@ class SysLogHandler(logging.handlers.SysLogHandler): """ prio = '<%d>' % self.encodePriority(self.facility, self.mapPriority(record.levelname)) + msg = prio + msg + return msg + + def emit(self, record): + """ + Emit a record. + + The record is formatted, and then sent to the syslog server. If + exception information is present, it is NOT sent to the server. + """ + msg = self._custom_format(record) # Message is a string. Convert to bytes as required by RFC 5424 if type(msg) is unicode: msg = msg.encode('utf-8') ## this puts BOM in wrong place #if codecs: # msg = codecs.BOM_UTF8 + msg - msg = prio + msg try: if self.unixsocket: try: @@ -283,32 +287,17 @@ class SysLogHandler(logging.handlers.SysLogHandler): except: self.handleError(record) - -class SysLogHostnameHandler(logging.handlers.SysLogHandler): +class SysLogHostnameHandler(SysLogHandler): """Slightly modified standard SysLogHandler - sends also hostname and service type""" - def emit(self, record): + def _custom_format(self, record): msg = self.format(record) format_string = '<%d> %s %s %s\000' msg = format_string % (self.encodePriority(self.facility,self.mapPriority(record.levelname)), _hostname, _service_name, msg) - if type(msg) is unicode: - msg = msg.encode('utf-8') - try: - if self.unixsocket: - try: - self.socket.send(msg) - except socket.error: - self._connect_unixsocket(self.address) - self.socket.send(msg) - else: - self.socket.sendto(msg, self.address) - except (KeyboardInterrupt, SystemExit): - raise - except: - self.handleError(record) + return msg try: from logging import LoggerAdapter |