summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartinko2012-12-13 10:23:30 +0000
committermartinko2012-12-13 10:23:30 +0000
commit7b5fc2f4d0f9de38fae69c13c72723ae5ee8c0fb (patch)
tree5b7a69e12ad437cba8b820b1db20415bd5617996
parent0d75ab176822ea109754549fae1a9ebabd9c522d (diff)
skytools.skylog: unified SysLogHandler and SysLogHostnameHandler
-rw-r--r--python/skytools/skylog.py41
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