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()
Example #2
0
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()
Example #3
0
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()
Example #5
0
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)
Example #6
0
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)
Example #9
0
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()
Example #10
0
# 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 = {
Example #11
0
    '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 = {
Example #12
0
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()






Example #13
0
	def close(self):
		"""Close the loggers"""
		self.queue.put(None)
		SysLogHandler.close(self)