35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
|
import logging
|
||
|
from logging.handlers import TimedRotatingFileHandler, QueueListener, QueueHandler
|
||
|
|
||
|
def SlaveLogger(name, level, queue):
|
||
|
logger = logging.getLogger(name)
|
||
|
logger.setLevel(getattr(logging, level))
|
||
|
logger.addHandler(QueueHandler(queue))
|
||
|
logger.propagate = False
|
||
|
return logger
|
||
|
|
||
|
class MasterLogger():
|
||
|
def __init__(self, name, level, queue):
|
||
|
consoleFormat = logging.Formatter('[%(name)s] [%(levelname)s] %(message)s')
|
||
|
fileFormat = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s')
|
||
|
|
||
|
console = logging.StreamHandler()
|
||
|
console.setFormatter(consoleFormat)
|
||
|
|
||
|
rotatingFile = TimedRotatingFileHandler('/mnt/glusterfs/pyledriver/logs/pyledriver-log', when='midnight')
|
||
|
rotatingFile.setFormatter(fileFormat)
|
||
|
|
||
|
logging.basicConfig(level=getattr(logging, level), handlers=[QueueHandler(queue)])
|
||
|
logger = logging.getLogger(name)
|
||
|
|
||
|
# since the logger module sucks and doesn't allow me to init
|
||
|
# a logger in a subclass, need to "fake" object inheritance
|
||
|
for i in ['debug', 'info', 'warning', 'error', 'critical']:
|
||
|
setattr(self, i, getattr(logger, i))
|
||
|
|
||
|
self.queListener = QueueListener(queue, console, rotatingFile)
|
||
|
self.queListener.start()
|
||
|
|
||
|
def stop(self):
|
||
|
self.queListener.stop()
|