Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- from time import sleep
- from random import randint
- from socket import gethostname, gethostbyname
- from logging import Formatter, getLogger, INFO, DEBUG, WARNING, ERROR, CRITICAL, NOTSET
- from zmq import Context, ssh
- from zmq.backend.cython.constants import PUB
- from zmq.log.handlers import PUBHandler
- LOGLEVELS = (
- 'NOTSET',
- 'DEBUG',
- 'INFO',
- 'WARNING',
- 'ERROR',
- 'CRITICAL'
- )
- LOGGER_PORT = '17770'
- LOGGER_SERVER = '192.168.10.216'
- LOGGER_USER = f'dan@{LOGGER_SERVER}'
- LOGGER_CONNECTION = f'tcp://{LOGGER_SERVER}:{LOGGER_PORT}'
- LOGGER_FORMAT = '%(levelname)s:%(asctime)s,%(msecs)d:%(process)d:%(name)s:%(filename)s:%(funcName)s:' \
- '%(lineno)d:%(message)s'
- def _check_level(loglevel):
- if isinstance(loglevel, str):
- numeric_level = getattr(logging, loglevel.upper(), None)
- elif isinstance(loglevel, int):
- numeric_level = loglevel if loglevel in range(10, 50, 10) else NOTSET
- else:
- raise ValueError(f'Invalid log level: {loglevel}')
- return numeric_level
- class TestModule:
- def __init__(self, **kwargs):
- self.name = __class__.__name__
- self.loglevel = _check_level(kwargs.get('loglevel', WARNING))
- self.hostname = gethostname()
- self.ipaddr = gethostbyname(self.hostname)
- def start(self):
- ctx = Context()
- socket = ctx.socket(PUB)
- ssh.tunnel_connection(socket, LOGGER_CONNECTION, LOGGER_USER)
- handler = PUBHandler(socket)
- formatter = Formatter(LOGGER_FORMAT, datefmt='%Y/%m/%d %H:%M:%S')
- for level in [DEBUG, INFO, WARNING, ERROR, CRITICAL]:
- handler.formatters[level] = formatter
- remote_logger = getLogger(self.name)
- remote_logger.addHandler(handler)
- remote_logger.setLevel(self.loglevel)
- remote_logger.info(f'{self.hostname}:{self.ipaddr}:MyApp:started')
- while True:
- msg = f'{self.hostname}:{self.ipaddr}:Test message client'
- level = LOGLEVELS[randint(1, 5)]
- remote_logger.log(getattr(logging, level), msg)
- sleep(randint(1, 2))
Advertisement
Add Comment
Please, Sign In to add comment