Source code for wishbone.module.wbsyslog

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  wbsyslog.py
#
#  Copyright 2018 Jelle Smet <development@smetj.net>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#
#

from wishbone.module import OutputModule
import syslog
import sys
import os


[docs]class Syslog(OutputModule): '''**Submits event data to syslog.** Logevents have following format: (6, 1367682301.430527, 'Router', 'Received SIGINT. Shutting down.') The first value corresponds to the syslog severity level. Parameters:: - ident(str)(<script_name>)* | The syslog id string. | If not provided the script name is used. | (Can be a dynamic value) - level(int)(5)* | The loglevel. | (Can be a dynamic value) - native_events(bool)(False) | If True, outgoing events are native events. - payload(str)(None) | The string to submit. | If defined takes precedence over `selection`. - parallel_streams(int)(1) | The number of outgoing parallel data streams. - selection(str)("data") | The event key to submit. Queues:: - inbox | incoming events ''' def __init__(self, actor_config, selection="data", payload=None, native_events=False, parallel_streams=1, level=5, ident=os.path.basename(sys.argv[0])): OutputModule.__init__(self, actor_config) self.pool.createQueue("inbox") self.registerConsumer(self.consume, "inbox") def preHook(self): syslog.openlog("%s[%s]" % (self.kwargs.ident, os.getpid())) def consume(self, event): data = self.encode( self.getDataToSubmit( event ) ) syslog.syslog( event.kwargs.level, data ) def postHook(self): syslog.closelog()