def syslogs_sender(): # Initalize SysLogHandler logger = logging.getLogger() logger.setLevel(logging.INFO) syslog = SysLogHandler(address=(args.host, args.port)) logger.addHandler(syslog) for message in range(1, args.count + 1): # Randomize some fields time_output = time.strftime("%b %d %H:%M:%S") random_host = random.choice(range(1, 11)) random_tag = random.choice(tag) random_level = random.choice(syslog_level) fqdn = "{0}{1}{2}".format(hostname, random_host, domain_name) random_pid = random.choice(range(500, 9999)) message = open_sample_log(args.file) fields = {'host_field': fqdn, 'date_field': time_output,\ 'tag_field': random_tag} format = logging.Formatter\ ('%(date_field)s %(host_field)s {0}[{1}]: %(message)s'\ .format(random_tag, random_pid)) syslog.setFormatter(format) print("[+] Sent: {0}: {1}".format(time_output, message), end='') getattr(logger, random_level)(message, extra=fields) logger.removeHandler(syslog) syslog.close()
def syslogs_sender(): # Initalize SysLogHandler logger = logging.getLogger() logger.setLevel(logging.INFO) syslog = SysLogHandler(address=(args.host, args.port)) logger.addHandler(syslog) for message in range(1, args.count+1): # Randomize some fields time_output = time.strftime("%b %d %H:%M:%S") random_host = random.choice(range(1,11)) random_tag = random.choice(tag) random_level = random.choice(syslog_level) fqdn = "{0}{1}{2}".format(hostname, random_host, domain_name) random_pid = random.choice(range(500,9999)) message = open_sample_log(args.file) fields = {'host_field': fqdn, 'date_field': time_output,\ 'tag_field': random_tag} format = logging.Formatter\ ('%(date_field)s %(host_field)s {0}[{1}]: %(message)s'\ .format(random_tag, random_pid)) syslog.setFormatter(format) print("[+] Sent: {0}: {1}".format(time_output, message), end='') getattr(logger, random_level)(message, extra=fields) logger.removeHandler(syslog) syslog.close()
class SyslogTailTestCase(BaseTestCase): def setup_method(self, method): super(SyslogTailTestCase, self).setup_method(method) self.tail = SyslogTail(address=('localhost', 514), interval=0.1) # Set up python logger self.logger = logging.getLogger(self.__class__.__name__) self.logger.setLevel(logging.DEBUG) self.handler = SysLogHandler(address=('localhost', 514)) self.handler.setFormatter(logging.Formatter(' amplify: %(message)s')) self.logger.addHandler(self.handler) def teardown_method(self, method): # Revert logger stuff self.handler.close() self.handler = None self.logger = None # Kill the SyslogTail self.tail.stop() self.tail = None def test_overall(self): time.sleep(0.1) # Release GIL so async listener can "hear" the DGRAMs count = 1 while count <= 5: self.logger.debug('This is message #%s' % count) count += 1 time.sleep(0.1) # Release GIL so async listener can handle DGRAMs # Check to see that SyslogListener read 5 messages assert_that(self.tail.cache, has_length(count - 1)) # Check the cache directly to make sure messages were decoded. for i in xrange(5): assert_that(self.tail.cache[i], equal_to(u'This is message #%s\x00' % (i + 1))) # Go through and check the messages via iteration count = 1 for line in self.tail: assert_that(line, equal_to(u'This is message #%s\x00' % count)) count += 1 # Check that cache was cleared after iteration assert_that(self.tail.cache, has_length(0)) # TODO: test_overall doesn't work if there are other tests run with it...why? # The tests below pass, but will cause test_overall to fail if run...so skipped for now. @disabled_test def test_addresses(self): assert_that(('localhost', 514), is_in(SYSLOG_ADDRESSES)) @disabled_test def test_socket_conflict(self): assert_that( calling(SyslogTail).with_args(address=('localhost', 514)), raises(AmplifyAddresssAlreadyInUse))
def send_syslog(): # Initialize SysLogHandler logger = logging.getLogger() # Logging level has to be set but we don't really care about its value logger.setLevel(logging.NOTSET) # Specify where the messages are being sent syslog = SysLogHandler(address=(args.h, args.p)) logger.addHandler(syslog) # Loop specified amount of times for _ in range(args.c): logger, syslog = create_random_log(logger, syslog) logger.removeHandler(syslog) syslog.close()
class logWriter(object): def __init__(self, logFacility = SysLogHandler.LOG_LOCAL0): format = Formatter("%(levelname)-12s %(asctime)s %(process)d %(message)s") self.sLogger = Logger(SysLogHandler.LOG_DEBUG) #self.sLogger.setLevel() self.sysHandler = SysLogHandler(address = '/dev/log', facility = logFacility) self.sysHandler.setFormatter(format) self.sLogger.addHandler(self.sysHandler) def __del__(self): self.sysHandler.flush() self.sysHandler.close() def sendMsg(self, level, msg): self.sLogger.log(level,logLevelStr[level] + msg)
def syslogs_sender(): # Initalize SysLogHandler logger = logging.getLogger() logger.setLevel(logging.INFO) syslog = SysLogHandler(address=(args.host, args.port)) logger.addHandler(syslog) for message in range(1, args.count+1): # Randomize some fields time_output = time.strftime("%b %d %H:%M:%S") random_host = random.choice(range(1,11)) random_tag = random.choice(tag) random_level = random.choice(syslog_level) # fqdn = "{0}{1}{2}".format(hostname, random_host, domain_name) x = random.randint(1, 3) y = random.randint(240, 242) fqdn = "{0}{1}{2}".format(hostname, '{0}.'.format(x), '{0}'.format(y)) random_pid = random.choice(range(500,9999)) # message = open_sample_log(args.file) ## File workaround hName = '{0}'.format(random.choice(['alice', 'jack', 'bob', 'tim'])) ## Sensor code names tName = '{0}'.format(random.choice(['paper', 'stone', 'brick', 'mortar'])) ## Target code names flag = '{0}'.format(random.choice(['S', 'SA', 'A', 'P', 'PA', 'F', 'R'])) ## Flag names logPossibles = ['src={0} dst={1} flag={2}'.format(hName, tName, flag)] with open('logZ', 'w') as oFile: for i in logPossibles: oFile.write(i + '\n') message = open_sample_log('logZ') fields = {'host_field': fqdn, 'date_field': time_output,\ 'tag_field': random_tag} format = logging.Formatter\ ('%(date_field)s %(host_field)s {0}[{1}]: %(message)s'\ .format(random_tag, random_pid)) syslog.setFormatter(format) print("[+] Sent: {0}: {1}".format(time_output, message), end='') getattr(logger, random_level)(message, extra=fields) logger.removeHandler(syslog) syslog.close()
def test_stdout(self): """ Test printing to stdout with the fallback Syslog provider. """ with tempfile.NamedTemporaryFile() as tmpfile: with redirect_stream(tmpfile.file.fileno()): syslog = forklift.services.Syslog.stdout('fake_app') self.assertTrue(syslog.available()) env = syslog.environment() import logging from logging.handlers import SysLogHandler handler = SysLogHandler( address=(env['SYSLOG_SERVER'], int(env['SYSLOG_PORT'])), socktype=socket.SOCK_DGRAM if env['SYSLOG_PROTO'] == 'udp' else socket.SOCK_STREAM, ) handler.handle( logging.LogRecord( name='logname', level=logging.INFO, pathname='/fake/file', lineno=314, msg="Logging %s", args="message", exc_info=None, )) handler.close() # Give the server a chance to process the message sleep(1) with open(tmpfile.name) as saved_output: log = saved_output.read() self.assertEqual("<14>Logging message\x00\n", log)
def test_stdout(self): """ Test printing to stdout with the fallback Syslog provider. """ with tempfile.NamedTemporaryFile() as tmpfile: with redirect_stream(tmpfile.file.fileno()): syslog = forklift.services.Syslog.stdout('fake_app') self.assertTrue(syslog.available()) env = syslog.environment() import logging from logging.handlers import SysLogHandler handler = SysLogHandler( address=(env['SYSLOG_SERVER'], int(env['SYSLOG_PORT'])), socktype=socket.SOCK_DGRAM if env['SYSLOG_PROTO'] == 'udp' else socket.SOCK_STREAM, ) handler.handle(logging.LogRecord( name='logname', level=logging.INFO, pathname='/fake/file', lineno=314, msg="Logging %s", args="message", exc_info=None, )) handler.close() # Give the server a chance to process the message sleep(1) with open(tmpfile.name) as saved_output: log = saved_output.read() self.assertEqual("<14>Logging message\x00\n", log)
class SyslogLogger(object): __syslog_handler = None def __init__(self, address, frmt=None): self.__syslog_handler = SysLogHandler(address) if frmt is None or frmt == "msg_only": self.__syslog_handler.formatter = SyslogLoggerMsgOnlyFormatter() else: self.__syslog_handler.formatter = SyslogLoggerJSONFormatter() def close(self): self.__syslog_handler.close() def msg(self, event_dict): record = LogRecord(event_dict.get("name", "unknown"), event_dict.get("level", "WARNING"), "/not_used/not_used.py", 1, event_dict, [], None) self.__syslog_handler.acquire() try: self.__syslog_handler.emit(record) finally: self.__syslog_handler.release()
# Custom exception reporter to include some details DEFAULT_EXCEPTION_REPORTER_FILTER = "weblate.trans.debug.WeblateExceptionReporterFilter" # Default logging of Weblate messages # - to syslog in production (if available) # - otherwise to console # - you can also choose "logfile" to log into separate file # after configuring it below # Detect if we can connect to syslog HAVE_SYSLOG = False if platform.system() != "Windows": try: handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2) handler.close() HAVE_SYSLOG = True except IOError: HAVE_SYSLOG = False if DEBUG or not HAVE_SYSLOG: DEFAULT_LOG = "console" else: DEFAULT_LOG = "syslog" # A sample logging configuration. The only tangible logging # performed by this configuration is to send an email to # the site admins on every HTTP 500 error when DEBUG=False. # See http://docs.djangoproject.com/en/stable/topics/logging for # more details on how to customize your logging configuration. LOGGING = {
'weblate.trans.debug.WeblateExceptionReporterFilter' # Default logging of Weblate messages # - to syslog in production (if available) # - otherwise to console # - you can also choose 'logfile' to log into separate file # after configuring it below # Detect if we can connect to syslog HAVE_SYSLOG = False if platform.system() != 'Windows': try: handler = SysLogHandler( address='/dev/log', facility=SysLogHandler.LOG_LOCAL2 ) handler.close() HAVE_SYSLOG = True except IOError: HAVE_SYSLOG = False if DEBUG or not HAVE_SYSLOG: DEFAULT_LOG = 'console' else: DEFAULT_LOG = 'syslog' # A sample logging configuration. The only tangible logging # performed by this configuration is to send an email to # the site admins on every HTTP 500 error when DEBUG=False. # See http://docs.djangoproject.com/en/stable/topics/logging for # more details on how to customize your logging configuration. LOGGING = {
syslog.syslog(syslog.LOG_NOTICE, "Notice msg via syslog") syslog.syslog(syslog.LOG_WARNING, "Warning msg via syslog") syslog.closelog() # use a log handler -- great if you want multiple handlers # or want to use web server logging or some other type as well.... print "Using logging module w/ syslog handler for multiple msgs" import logging import logging.handlers from logging.handlers import SysLogHandler l=logging.getLogger('MyLogger') l.setLevel(logging.INFO) # no logging.NOTICE lh=SysLogHandler(address='/dev/log', facility=SysLogHandler.LOG_LOCAL1) l.addHandler(lh) l.info('SLH: info msg') l.warning('SLH: warning msg') l.debug('SLH: debug msg') l.critical('SLH: critical msg') l.info('Done') lh.close()
def close(self): """Close the loggers""" self.queue.put(None) SysLogHandler.close(self)