powerapi/timber.py

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()