[Yum-devel] [PATCH] Fix syslog_indent and syslog_facility settings, improve syslog format.

James Antill james at fedoraproject.org
Wed Mar 24 19:04:08 UTC 2010


On Wed, 2010-03-24 at 18:33 +0200, Ville Skyttä wrote:
> ---
>  yum/logginglevels.py |   59 ++++++++++++++++++++++---------------------------
>  1 files changed, 27 insertions(+), 32 deletions(-)
> 
> diff --git a/yum/logginglevels.py b/yum/logginglevels.py
> index 3d82b55..1de8ef0 100644
> --- a/yum/logginglevels.py
> +++ b/yum/logginglevels.py
> @@ -45,28 +45,27 @@ logging.addLevelName(DEBUG_4, "DEBUG_4")
>  __NO_LOGGING = 100
>  logging.raiseExceptions = False
>  
> -import syslog as syslog_module
> -
>  syslog = None
>  
> -# Mostly borrowed from original yum-updated.py
> -_syslog_facility_map = { "KERN"   : syslog_module.LOG_KERN,
> -                         "USER"   : syslog_module.LOG_USER,
> -                         "MAIL"   : syslog_module.LOG_MAIL,
> -                         "DAEMON" : syslog_module.LOG_DAEMON,
> -                         "AUTH"   : syslog_module.LOG_AUTH,
> -                         "LPR"    : syslog_module.LOG_LPR,
> -                         "NEWS"   : syslog_module.LOG_NEWS,
> -                         "UUCP"   : syslog_module.LOG_UUCP,
> -                         "CRON"   : syslog_module.LOG_CRON,
> -                         "LOCAL0" : syslog_module.LOG_LOCAL0,
> -                         "LOCAL1" : syslog_module.LOG_LOCAL1,
> -                         "LOCAL2" : syslog_module.LOG_LOCAL2,
> -                         "LOCAL3" : syslog_module.LOG_LOCAL3,
> -                         "LOCAL4" : syslog_module.LOG_LOCAL4,
> -                         "LOCAL5" : syslog_module.LOG_LOCAL5,
> -                         "LOCAL6" : syslog_module.LOG_LOCAL6,
> -                         "LOCAL7" : syslog_module.LOG_LOCAL7,}
> +# Mostly borrowed from original yum-updatesd.py
> +_syslog_facility_map = { "KERN"   : logging.handlers.SysLogHandler.LOG_KERN,
> +                         "USER"   : logging.handlers.SysLogHandler.LOG_USER,
> +                         "MAIL"   : logging.handlers.SysLogHandler.LOG_MAIL,
> +                         "DAEMON" : logging.handlers.SysLogHandler.LOG_DAEMON,
> +                         "AUTH"   : logging.handlers.SysLogHandler.LOG_AUTH,
> +                         "LPR"    : logging.handlers.SysLogHandler.LOG_LPR,
> +                         "NEWS"   : logging.handlers.SysLogHandler.LOG_NEWS,
> +                         "UUCP"   : logging.handlers.SysLogHandler.LOG_UUCP,
> +                         "CRON"   : logging.handlers.SysLogHandler.LOG_CRON,
> +                         "LOCAL0" : logging.handlers.SysLogHandler.LOG_LOCAL0,
> +                         "LOCAL1" : logging.handlers.SysLogHandler.LOG_LOCAL1,
> +                         "LOCAL2" : logging.handlers.SysLogHandler.LOG_LOCAL2,
> +                         "LOCAL3" : logging.handlers.SysLogHandler.LOG_LOCAL3,
> +                         "LOCAL4" : logging.handlers.SysLogHandler.LOG_LOCAL4,
> +                         "LOCAL5" : logging.handlers.SysLogHandler.LOG_LOCAL5,
> +                         "LOCAL6" : logging.handlers.SysLogHandler.LOG_LOCAL6,
> +                         "LOCAL7" : logging.handlers.SysLogHandler.LOG_LOCAL7,
> +                       }

 Could you change all this to just do:

> -import syslog as syslog_module
> +syslog_module = logging.handlers.SysLogHandler

...it's a little evil, but it'll save 50% on the patch.

>  def syslogFacilityMap(facility):
>      if type(facility) == int:
>          return facility
> @@ -75,7 +74,7 @@ def syslogFacilityMap(facility):
>      elif (facility.upper().startswith("LOG_") and
>            facility[4:].upper() in _syslog_facility_map):
>          return _syslog_facility_map[facility[4:].upper()]
> -    return syslog_module.LOG_USER
> +    return _syslog_facility_map["USER"]
>  
>  def logLevelFromErrorLevel(error_level):
>      """ Convert an old-style error logging level to the new style. """
> @@ -140,7 +139,6 @@ def doLoggingSetup(debuglevel, errorlevel,
>          return
>  
>      plainformatter = logging.Formatter("%(message)s")
> -    syslogformatter = logging.Formatter("yum: %(message)s")
>      
>      console_stdout = logging.StreamHandler(sys.stdout)
>      console_stdout.setFormatter(plainformatter)
> @@ -158,20 +156,17 @@ def doLoggingSetup(debuglevel, errorlevel,
>      filelogger.setLevel(logging.INFO)
>      filelogger.propagate = False
>  
> -    log_dev = syslog_device
>      global syslog
> -    if os.path.exists(log_dev):
> +    if os.path.exists(syslog_device):
>          try:
> -            syslog = logging.handlers.SysLogHandler(log_dev)
> -            syslog.setFormatter(syslogformatter)
> -            filelogger.addHandler(syslog)
> -            if syslog_ident is not None or syslog_facility is not None:
> -                ident = syslog_ident    or ''
> -                facil = syslog_facility or 'LOG_USER'
> -                syslog_module.openlog(ident, 0, syslogFacilityMap(facil))
> +            facil = syslogFacilityMap(syslog_facility or "USER")
> +            syslog = logging.handlers.SysLogHandler(syslog_device, facil)
>          except socket.error:
>              if syslog is not None:
>                  syslog.close()
> +        else:
> +            setLoggingApp(syslog_ident or "yum")
> +            filelogger.addHandler(syslog)

 ACK.
 Although the commit should probably say that we are now allowing remote
syslog "devices".

>      _added_handlers = True
>  
>      if debuglevel is not None:
> @@ -201,5 +196,5 @@ def setFileLog(uid, logfile):
>  
>  def setLoggingApp(app):
>      if syslog:
> -        syslogformatter = logging.Formatter("yum(%s): "% (app,) + "%(message)s")
> +        syslogformatter = logging.Formatter(app + "[%(process)d]: %(message)s")
>          syslog.setFormatter(syslogformatter)



More information about the Yum-devel mailing list