68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
import logging
|
|
|
|
# TODO: logrotate
|
|
# TODO: send logs to syslog
|
|
# TODO: represent in grafana
|
|
|
|
|
|
class LumberJack:
|
|
def __init__(self,
|
|
log_level='debug',
|
|
log_file='power_api.log',
|
|
log_filemode='a',
|
|
log_format='{asctime} - {levelname} - {message}',
|
|
log_date_format='%Y-%m-%d %H:%M:%S'):
|
|
if not log_level:
|
|
log_level = 'debug'
|
|
if not log_file:
|
|
log_file = 'power_api.log'
|
|
if not log_filemode:
|
|
log_filemode = 'a'
|
|
if not log_format:
|
|
log_format = '{asctime} - {levelname} - {message}'
|
|
if not log_date_format:
|
|
log_date_format = '%Y-%m-%d %H:%M:%S'
|
|
self.loglevel = self.configure_log_level(log_level)
|
|
self.filename = log_file
|
|
self.filemode = log_filemode
|
|
self.format = log_format
|
|
self.datefmt = log_date_format
|
|
|
|
self.set_config()
|
|
|
|
def set_config(self):
|
|
logging.basicConfig(
|
|
level=self.loglevel,
|
|
filename=self.filename,
|
|
filemode=self.filemode,
|
|
format=self.format,
|
|
style="{",
|
|
datefmt=self.datefmt
|
|
)
|
|
|
|
def set_log_level(self,l):
|
|
self.loglevel = self.configure_log_level(l)
|
|
|
|
@staticmethod
|
|
def configure_log_level(l):
|
|
if l.lower() in 'debug':
|
|
level = logging.DEBUG
|
|
elif l.lower() in 'info':
|
|
level = logging.INFO
|
|
elif l.lower() in 'warning':
|
|
level = logging.WARNING
|
|
elif l.lower() in 'error':
|
|
level = logging.ERROR
|
|
elif l.lower() in 'critical':
|
|
level = logging.CRITICAL
|
|
else:
|
|
level = logging.DEBUG
|
|
return level
|
|
|
|
def set_filename(self,n):
|
|
self.filename = n
|
|
self.set_config()
|
|
|
|
# LumberJack()
|
|
axe = logging.getLogger()
|