# elog/mod_syslog.py - elog dispatch module # Copyright 2006-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import sys import syslog from portage.const import EBUILD_PHASES from portage import _encodings if sys.hexversion >= 0x3000000: basestring = str _pri = { "INFO" : syslog.LOG_INFO, "WARN" : syslog.LOG_WARNING, "ERROR" : syslog.LOG_ERR, "LOG" : syslog.LOG_NOTICE, "QA" : syslog.LOG_WARNING } def process(mysettings, key, logentries, fulltext): syslog.openlog("portage", syslog.LOG_ERR | syslog.LOG_WARNING | syslog.LOG_INFO | syslog.LOG_NOTICE, syslog.LOG_LOCAL5) for phase in EBUILD_PHASES: if not phase in logentries: continue for msgtype,msgcontent in logentries[phase]: if isinstance(msgcontent, basestring): msgcontent = [msgcontent] for line in msgcontent: line = "%s: %s: %s" % (key, phase, line) if sys.hexversion < 0x3000000 and not isinstance(line, bytes): # Avoid TypeError from syslog.syslog() line = line.encode(_encodings['content'], 'backslashreplace') syslog.syslog(_pri[msgtype], line.rstrip("\n")) syslog.closelog()