Skip to content

Instantly share code, notes, and snippets.

@Farrukhraz
Created June 2, 2020 16:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Farrukhraz/14ec2f657a2130bd6920fddfe3bd838d to your computer and use it in GitHub Desktop.
Save Farrukhraz/14ec2f657a2130bd6920fddfe3bd838d to your computer and use it in GitHub Desktop.
import platform
import logging
from logging.handlers import RotatingFileHandler
class ConsoleLogger:
handlers = [
(logging.StreamHandler,
dict(),
logging.DEBUG),
(RotatingFileHandler,
dict(
filename="py_executor.log",
maxBytes=26214400, # 25MB
backupCount=10
),
logging.DEBUG)
]
def make_json_msg(self, content):
return dict(system=self.name,
status=self.status,
content=content)
def set_level(self, level):
self.logger.setLevel(level)
def set_status(self, status):
self.status = status
def debug(self, content=None):
content = self.make_json_msg(content)
self.logger.debug(content)
def info(self, content=None):
content = self.make_json_msg(content)
self.logger.info(content)
def warning(self, content=None):
content = self.make_json_msg(content)
self.logger.warning(content)
def error(self, content=None):
content = self.make_json_msg(content)
self.logger.error(content)
def exception(self, content=None):
content = self.make_json_msg(content)
self.logger.exception(content)
def get_hostname(self):
return platform.node()
def __init__(self, name=__name__, default_level=logging.DEBUG):
self.logger = logging.Logger(name)
self.name = name
self.status = 'running'
if not self.logger.handlers or len(self.logger.handlers) < 1:
for handler_class, params, level in self.handlers:
handler = handler_class(**params)
handler.setFormatter(logging.Formatter(
f"%(asctime)s\t{self.get_hostname()}\t<%(levelname)s>\t%(message)s",
"%b %d %H:%M:%S"))
handler.setLevel(level if not default_level else default_level)
self.logger.addHandler(handler)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment