Hi, > +import logging.handlers > import types > -from logging.handlers import SysLogHandler, SYSLOG_UDP_PORT I do not think this was necessary, imho the code was more readable with short names. > + def forwardLog(self, logger): This name should probably be more descriptive. Something along the lines of registerSyslogHandler or addSyslogOuput. Or maybe forwardToSyslog (or any combination of these) Otherwise it looks OK. Martin ----- "Ales Kozumplik" <akozumpl@xxxxxxxxxx> wrote: > This allows anaconda to progressively send contents of anaconda.log > and > storage.log to a remote machine. > --- > anaconda_log.py | 30 +++++++++++++++++++++++++++--- > storage/storage_log.py | 1 + > 2 files changed, 28 insertions(+), 3 deletions(-) > > diff --git a/anaconda_log.py b/anaconda_log.py > index 3be4e6a..f3da560 100644 > --- a/anaconda_log.py > +++ b/anaconda_log.py > @@ -24,8 +24,8 @@ > > import sys > import logging > +import logging.handlers > import types > -from logging.handlers import SysLogHandler, SYSLOG_UDP_PORT > > DEFAULT_LEVEL = logging.INFO > DEFAULT_ENTRY_FORMAT = "%(asctime)s,%(msecs)03d %(levelname)-8s: > %(message)s" > @@ -33,6 +33,7 @@ DEFAULT_DATE_FORMAT = "%H:%M:%S" > > MAIN_LOG_FILE = "/tmp/anaconda.log" > PROGRAM_LOG_FILE = "/tmp/program.log" > +ANACONDA_SYSLOG_FACILITY = logging.handlers.SysLogHandler.LOG_LOCAL1 > > logLevelMap = {"debug": logging.DEBUG, "info": logging.INFO, > "warning": logging.WARNING, "error": logging.ERROR, > @@ -53,6 +54,18 @@ class LoggerClass(logging.Logger): > setattr(hdlr, "autoSetLevel", autoSetLevel) > logging.Logger.addHandler(self, hdlr) > > +class AnacondaSyslogHandler(logging.handlers.SysLogHandler): > + def __init__(self, > + address=('localhost', > logging.handlers.SYSLOG_UDP_PORT), > + facility=logging.handlers.SysLogHandler.LOG_USER, > + tag=''): > + self.tag = tag > + logging.handlers.SysLogHandler.__init__(self, address, > facility) > + > + def emit(self, record): > + record.msg = '%s: %s' %(self.tag, record.msg) > + logging.handlers.SysLogHandler.emit(self, record) > + > class AnacondaLog: > def __init__ (self, minLevel=DEFAULT_LEVEL): > # Create the base of the logger hierarcy. > @@ -60,6 +73,7 @@ class AnacondaLog: > self.logger.setLevel(logging.DEBUG) > self.addFileHandler(MAIN_LOG_FILE, self.logger, > autoSetLevel=False, > minLevel=logging.DEBUG) > + self.forwardLog(self.logger) > > # External program output log > program_logger = logging.getLogger("program") > @@ -98,14 +112,24 @@ class AnacondaLog: > newLogger.setLevel(minLevel) > > # Add a handler for remote syslogs. > - def addSysLogHandler (self, logger, host, port=SYSLOG_UDP_PORT, > + def addSysLogHandler (self, logger, host, > port=logging.handlers.SYSLOG_UDP_PORT, > minLevel=DEFAULT_LEVEL): > fmt = logging.Formatter("%(levelname)-8s %(message)s") > - syslogHandler = SysLogHandler((host, port)) > + syslogHandler = logging.handlers.SysLogHandler((host, port)) > syslogHandler.setLevel(minLevel) > syslogHandler.setFormatter(fmt) > logger.addHandler(syslogHandler) > > + def forwardLog(self, logger): > + """Forward everything that goes in the logger to the syslog > daemon. > + """ > + syslogHandler = AnacondaSyslogHandler( > + '/dev/log', > + ANACONDA_SYSLOG_FACILITY, > + logger.name) > + syslogHandler.setLevel(logging.DEBUG) > + logger.addHandler(syslogHandler) > + > # Set base class for logger instances. > logging.setLoggerClass(LoggerClass) > logger = AnacondaLog() > diff --git a/storage/storage_log.py b/storage/storage_log.py > index 853b0cd..b637759 100644 > --- a/storage/storage_log.py > +++ b/storage/storage_log.py > @@ -22,3 +22,4 @@ logger = logging.getLogger("storage") > logger.setLevel(logging.DEBUG) > anaconda_log.logger.addFileHandler("/tmp/storage.log", logger, > logging.DEBUG) > anaconda_log.logger.addFileHandler("/dev/tty3", logger, > logging.DEBUG) > +anaconda_log.logger.forwardLog(logger) > -- > 1.6.2.5 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list