So first off I'll try and list the problems with the current approach to logging/output:
1. Function names are way to long, Eg. self.verbose_logger.log(logginglevels.INFO_2, msg) 2. We have 20 distinct levels/interfaces right now ... not including "print". 3. We don't cover the common cases well, for instance I think these would be considered the common things you'd want: i. quiet ii. normal iii. verbose iv. debug (more in levels, sections or whatever). ...now IMO #iii is the biggest problem due to a bunch of debugging data mixed in so isn't that usable/used. 4. Almost everything goes off of YumBase.logger/YumBase.verbose_logger ... except some parts of the code which don't have access to a YumBase object. 5. Also kind of related is that we don't have much in the way of good output data utilities, for instance section headers. ...so the only thing I have for you to look at "solves" #1 and #4 (just used in __init__ atm). Feel free to comment on anything. Patch at: http://people.redhat.com/jantill/yum/patches/logging-2008-03-07.patch -- James Antill <[EMAIL PROTECTED]> Red Hat
commit 094677f024fca0e3b591840bcd164ef93cea0e8b
Author: James Antill <[EMAIL PROTECTED]>
Date: Sat Mar 8 01:35:35 2008 -0500
First attempt at logging API
diff --git a/yum/__init__.py b/yum/__init__.py
index 1acadf1..bdb9d4e 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -27,8 +27,6 @@ import errno
import time
import glob
import fnmatch
-import logging
-import logging.config
import operator
import gzip
@@ -53,6 +51,9 @@ from packageSack import ListPackageSack
import depsolve
import plugins
import logginglevels
+from logginglevels import info,info1,info2, warn,err,crit, dbg,dbg1,dbg2,dbg3
+from logginglevels import vinfo,vinfo1,vinfo2, vwarn,verr,vcrit
+from logginglevels import vdbg,vdbg1,vdbg2,vdbg3
import yumRepo
import callbacks
@@ -84,8 +85,14 @@ class YumBase(depsolve.Depsolve):
self._up = None
self._comps = None
self._pkgSack = None
- self.logger = logging.getLogger("yum.YumBase")
- self.verbose_logger = logging.getLogger("yum.verbose.YumBase")
+
+ self.log = logginglevels.log
+ self.vlog = logginglevels.vlog
+
+ # FIXME: backwards compat. with plugins etc., remove in next API bump
+ self.logger = self.log.logger
+ self.verbose_logger = self.vlog.logger
+
self._repos = RepoStorage(self)
# Start with plugins disabled
@@ -185,7 +192,7 @@ class YumBase(depsolve.Depsolve):
self.doFileLogSetup(self.conf.uid, self.conf.logfile)
- self.verbose_logger.debug('Config time: %0.3f' % (time.time() - conf_st))
+ vdbg_tm(conf_st, 'Config')
self.plugins.run('init')
return self._conf
@@ -236,14 +243,14 @@ class YumBase(depsolve.Depsolve):
break
if bad:
- self.logger.warning("Bad name for repo: %s, byte = %s %d" %
- (section, bad, section.find(byte)))
+ warn("Bad name for repo: %s, byte = %s %d",
+ section, bad, section.find(byte))
continue
try:
thisrepo = self.readRepoConfig(parser, section)
except (Errors.RepoError, Errors.ConfigError), e:
- self.logger.warning(e)
+ warn(e)
continue
else:
thisrepo.repo_config_age = repo_age
@@ -257,7 +264,7 @@ class YumBase(depsolve.Depsolve):
try:
self._repos.add(thisrepo)
except Errors.RepoError, e:
- self.logger.warning(e)
+ warn(e)
def getReposFromConfig(self):
"""read in repositories from config main and .repo files"""
@@ -293,8 +300,8 @@ class YumBase(depsolve.Depsolve):
# Ensure that the repo name is set
if not repo.name:
repo.name = section
- self.logger.error(_('Repository %r is missing name in configuration, '
- 'using id') % section)
+ err(_('Repository %r is missing name in configuration, '
+ 'using id'), section)
# Set attributes not from the config file
repo.basecachedir = self.conf.cachedir
@@ -346,9 +353,9 @@ class YumBase(depsolve.Depsolve):
if self._rpmdb is None:
rpmdb_st = time.time()
- self.verbose_logger.debug(_('Reading Local RPMDB'))
+ vdbg(_('Reading Local RPMDB'))
self._rpmdb = rpmsack.RPMDBPackageSack(root=self.conf.installroot)
- self.verbose_logger.debug('rpmdb time: %0.3f' % (time.time() - rpmdb_st))
+ vdbg_tm(rpmdb_st, 'rpmdb')
return self._rpmdb
def closeRpmDB(self):
@@ -376,7 +383,7 @@ class YumBase(depsolve.Depsolve):
if doSetup:
repo_st = time.time()
self._repos.doSetup(thisrepo)
- self.verbose_logger.debug('repo time: %0.3f' % (time.time() - repo_st))
+ vdbg_tm(repo_st, 'repo')
return self._repos
def _delRepos(self):
@@ -401,7 +408,7 @@ class YumBase(depsolve.Depsolve):
else:
repos = self.repos.findRepos(thisrepo)
- self.verbose_logger.debug(_('Setting up Package Sacks'))
+ vdbg(_('Setting up Package Sacks'))
sack_st = time.time()
if not archlist:
archlist = rpmUtils.arch.getArchList()
@@ -428,7 +435,7 @@ class YumBase(depsolve.Depsolve):
# now go through and kill pkgs based on pkg.repo.cost()
self.costExcludePackages()
- self.verbose_logger.debug('pkgsack time: %0.3f' % (time.time() - sack_st))
+ vdbg_tm(sack_st, 'pkgsack')
return self._pkgSack
@@ -462,7 +469,7 @@ class YumBase(depsolve.Depsolve):
if self._up:
return self._up
- self.verbose_logger.debug(_('Building updates object'))
+ vdbg(_('Building updates object'))
sack_pkglist = self.pkgSack.simplePkgList()
rpmdb_pkglist = self.rpmdb.simplePkgList()
@@ -476,23 +483,23 @@ class YumBase(depsolve.Depsolve):
if self.conf.obsoletes:
obs_init = time.time()
self._up.rawobsoletes = self.pkgSack.returnObsoletes(newest=True)
- self.verbose_logger.debug('up:Obs Init time: %0.3f' % (time.time() - obs_init))
+ vdbg_tm(obs_init, 'up:Obs Init')
self._up.exactarch = self.conf.exactarch
self._up.exactarchlist = self.conf.exactarchlist
up_pr_st = time.time()
self._up.doUpdates()
- self.verbose_logger.debug('up:simple updates time: %0.3f' % (time.time() - up_pr_st))
+ vdbg_tm(up_pr_st, 'up:simple updates')
if self.conf.obsoletes:
obs_st = time.time()
self._up.doObsoletes()
- self.verbose_logger.debug('up:obs time: %0.3f' % (time.time() - obs_st))
+ vdbg_tm(obs_st, 'up:obs')
cond_up_st = time.time()
self._up.condenseUpdates()
- self.verbose_logger.debug('up:condense time: %0.3f' % (time.time() - cond_up_st))
- self.verbose_logger.debug('updates time: %0.3f' % (time.time() - up_st))
+ vdbg_tm(cond_up_st, 'up:condense')
+ vdbg_tm(up_st, 'updates')
return self._up
def doGroupSetup(self):
@@ -520,7 +527,7 @@ class YumBase(depsolve.Depsolve):
return self._comps
group_st = time.time()
- self.verbose_logger.debug(_('Getting group metadata'))
+ vdbg(_('Getting group metadata'))
reposWithGroups = []
self.repos.doSetup()
for repo in self.repos.listGroupsEnabled():
@@ -545,8 +552,7 @@ class YumBase(depsolve.Depsolve):
if repo.groups_added: # already added the groups from this repo
continue
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Adding group file from repository: %s'), repo)
+ vdbg1(_('Adding group file from repository: %s'), repo)
groupfile = repo.getGroups()
# open it up as a file object so iterparse can cope with our gz file
if groupfile is not None and groupfile.endswith('.gz'):
@@ -556,7 +562,7 @@ class YumBase(depsolve.Depsolve):
self._comps.add(groupfile)
except (Errors.GroupsError,Errors.CompsException), e:
msg = _('Failed to add groups file for repository: %s - %s') % (repo, str(e))
- self.logger.critical(msg)
+ crit(msg)
else:
repo.groups_added = True
@@ -566,7 +572,7 @@ class YumBase(depsolve.Depsolve):
pkglist = self.rpmdb.simplePkgList()
self._comps.compile(pkglist)
- self.verbose_logger.debug('group time: %0.3f' % (time.time() - group_st))
+ vdbg_tm(group_st, 'group')
return self._comps
# properties so they auto-create themselves with defaults
@@ -614,7 +620,7 @@ class YumBase(depsolve.Depsolve):
if necessary:
msg = _('Importing additional filelist information')
- self.verbose_logger.log(logginglevels.INFO_2, msg)
+ info2(msg)
self.repos.populateSack(mdtype='filelists')
def buildTransaction(self):
@@ -636,7 +642,7 @@ class YumBase(depsolve.Depsolve):
if self.conf.skip_broken and rescode==1:
rescode, restring = self._skipPackagesWithProblems(rescode, restring)
- self.verbose_logger.debug('Depsolve time: %0.3f' % (time.time() - ds_st))
+ vdbg_tm(ds_st, 'Depsolve')
return rescode, restring
def _skipPackagesWithProblems(self, rescode, restring):
@@ -658,7 +664,7 @@ class YumBase(depsolve.Depsolve):
orig_restring = restring # Keep the old error messages
while len(self.po_with_problems) > 0 and rescode == 1:
count += 1
- self.verbose_logger.debug(_("Skip-broken round %i"), count)
+ vdbg(_("Skip-broken round %i"), count)
depTree = self._buildDepTree()
startTs = set(self.tsInfo)
toRemove = set()
@@ -681,16 +687,16 @@ class YumBase(depsolve.Depsolve):
if startTs-endTs == set():
break # bail out
if rescode != 1:
- self.verbose_logger.debug(_("Skip-broken took %i rounds "), count)
- self.verbose_logger.info(_('\nPackages skipped because of dependency problems:'))
+ vdbg(_("Skip-broken took %i rounds "), count)
+ vinfo(_('\nPackages skipped because of dependency problems:'))
skipped_list = [p for p in skipped_po]
skipped_list.sort()
for po in skipped_list:
msg = _(" %s from %s") % (str(po),po.repo.id)
- self.verbose_logger.info(msg)
+ vinfo(msg)
else:
# If we cant solve the problems the show the original error messages.
- self.verbose_logger.info("Skip-broken could not solve problems")
+ vinfo("Skip-broken could not solve problems")
return 1, orig_restring
return rescode, restring
@@ -774,7 +780,7 @@ class YumBase(depsolve.Depsolve):
try:
os.unlink(fn)
except (IOError, OSError), e:
- self.logger.critical(_('Failed to remove transaction file %s') % fn)
+ crit(_('Failed to remove transaction file %s'), fn)
self.plugins.run('posttrans')
@@ -814,8 +820,7 @@ class YumBase(depsolve.Depsolve):
#print '%s : %s : %s' % (pkgs[0], pkgs[0].repo, pkgs[0].repo.cost)
for pkg in pkgs[1:]:
if pkg.repo.cost > lowcost:
- msg = _('excluding for cost: %s from %s') % (pkg, pkg.repo.id)
- self.verbose_logger.log(logginglevels.DEBUG_3, msg)
+ vdbg3(_('excluding for cost: %s from %s'), pkg, pkg.repo.id)
pkg.repo.sack.delPackage(pkg)
@@ -845,21 +850,20 @@ class YumBase(depsolve.Depsolve):
return
if not repo:
- self.verbose_logger.log(logginglevels.INFO_2, _('Excluding Packages in global exclude list'))
+ vinfo2(_('Excluding Packages in global exclude list'))
else:
- self.verbose_logger.log(logginglevels.INFO_2, _('Excluding Packages from %s'),
- repo.name)
+ vinfo2(_('Excluding Packages from %s'), repo.name)
pkgs = self._pkgSack.returnPackages(repoid, patterns=excludelist)
exactmatch, matched, unmatched = \
parsePackages(pkgs, excludelist, casematch=1, unique='repo-pkgkey')
for po in exactmatch + matched:
- self.verbose_logger.debug('Excluding %s', po)
+ vdbg('Excluding %s', po)
po.repo.sack.delPackage(po)
- self.verbose_logger.log(logginglevels.INFO_2, 'Finished')
+ vinfo2('Finished')
def includePackages(self, repo):
"""removes packages from packageSacks based on list of packages, to include.
@@ -874,22 +878,21 @@ class YumBase(depsolve.Depsolve):
exactmatch, matched, unmatched = \
parsePackages(pkglist, includelist, casematch=1)
- self.verbose_logger.log(logginglevels.INFO_2,
- _('Reducing %s to included packages only'), repo.name)
+ vinfo2(_('Reducing %s to included packages only'), repo.name)
rmlist = []
for po in pkglist:
if po in exactmatch + matched:
- self.verbose_logger.debug(_('Keeping included package %s'), po)
+ vdbg(_('Keeping included package %s'), po)
continue
else:
rmlist.append(po)
for po in rmlist:
- self.verbose_logger.debug(_('Removing unmatched package %s'), po)
+ vdbg(_('Removing unmatched package %s'), po)
po.repo.sack.delPackage(po)
- self.verbose_logger.log(logginglevels.INFO_2, _('Finished'))
+ vinfo2(_('Finished'))
def doLock(self, lockfile = YUM_PID_FILE):
"""perform the yum locking, raise yum-based exceptions, not OSErrors"""
@@ -1042,7 +1045,7 @@ class YumBase(depsolve.Depsolve):
if cursize >= totsize: # otherwise keep it around for regetting
os.unlink(local)
else:
- self.verbose_logger.debug(_("using local copy of %s") %(po,))
+ vdbg(_("using local copy of %s"), po)
continue
remote_pkgs.append(po)
@@ -1243,11 +1246,10 @@ class YumBase(depsolve.Depsolve):
try:
os.unlink(fn)
except OSError, e:
- self.logger.warning(_('Cannot remove %s'), fn)
+ warn(_('Cannot remove %s'), fn)
continue
else:
- self.verbose_logger.log(logginglevels.DEBUG_4,
- _('%s removed'), fn)
+ vdbg4(_('%s removed'), fn)
def cleanHeaders(self):
exts = ['hdr']
@@ -1279,11 +1281,10 @@ class YumBase(depsolve.Depsolve):
try:
os.unlink(item)
except OSError, e:
- self.logger.critical(_('Cannot remove %s file %s'), filetype, item)
+ crit(_('Cannot remove %s file %s'), filetype, item)
continue
else:
- self.verbose_logger.log(logginglevels.DEBUG_4,
- _('%s file %s removed'), filetype, item)
+ vdbg4(_('%s file %s removed'), filetype, item)
removed+=1
msg = _('%d %s files removed') % (removed, filetype)
return 0, [msg]
@@ -1324,14 +1325,13 @@ class YumBase(depsolve.Depsolve):
ver=v, rel=r)
if len(matches) > 1:
updates.append(matches[0])
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('More than one identical match in sack for %s'),
- matches[0])
+ vdbg1(_('More than one identical match in sack for %s'),
+ matches[0])
elif len(matches) == 1:
updates.append(matches[0])
else:
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Nothing matches %s.%s %s:%s-%s from update'), n,a,e,v,r)
+ vdbg1(_('Nothing matches %s.%s %s:%s-%s from update'),
+ n,a,e,v,r)
# installed only
elif pkgnarrow == 'installed':
@@ -1560,12 +1560,10 @@ class YumBase(depsolve.Depsolve):
else:
usedDepString = False
where = self.pkgSack.searchAll(arg, False)
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Searching %d packages'), len(where))
+ vdbg1(_('Searching %d packages'), len(where))
for po in where:
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _('searching package %s'), po)
+ vdbg2(_('searching package %s'), po)
tmpvalues = []
if usedDepString:
@@ -1576,15 +1574,13 @@ class YumBase(depsolve.Depsolve):
tmpvalues.append(arg)
if isglob:
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _('searching in file entries'))
+ vdbg2(_('searching in file entries'))
for thisfile in po.dirlist + po.filelist + po.ghostlist:
if fnmatch.fnmatch(thisfile, arg):
tmpvalues.append(thisfile)
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _('searching in provides entries'))
+ vdbg2(_('searching in provides entries'))
for (p_name, p_flag, (p_e, p_v, p_r)) in po.provides:
prov = misc.prco_tuple_to_string((p_name, p_flag, (p_e, p_v, p_r)))
if not usedDepString:
@@ -1711,9 +1707,8 @@ class YumBase(depsolve.Depsolve):
try:
txmbr.groups.remove(grpid)
except ValueError:
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _("package %s was not marked in group %s"), txmbr.po,
- grpid)
+ vdbg1(_("package %s was not marked in group %s"),
+ txmbr.po, grpid)
continue
# if there aren't any other groups mentioned then remove the pkg
@@ -1750,13 +1745,11 @@ class YumBase(depsolve.Depsolve):
pkgs.extend(thisgroup.optional_packages)
for pkg in pkgs:
- self.verbose_logger.log(logginglevels.DEBUG_2,
- _('Adding package %s from group %s'), pkg, thisgroup.groupid)
+ vdbg2(_('Adding package %s from group %s'), pkg, thisgroup.groupid)
try:
txmbrs = self.install(name = pkg)
except Errors.InstallError, e:
- self.verbose_logger.debug(_('No package named %s available to be installed'),
- pkg)
+ vdbg(_('No package named %s available to be installed'), pkg)
else:
txmbrs_used.extend(txmbrs)
for txmbr in txmbrs:
@@ -1804,9 +1797,8 @@ class YumBase(depsolve.Depsolve):
try:
txmbr.groups.remove(grpid)
except ValueError:
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _("package %s was not marked in group %s"), txmbr.po,
- grpid)
+ vdbg1(_("package %s was not marked in group %s"),
+ txmbr.po, grpid)
continue
# if there aren't any other groups mentioned then remove the pkg
@@ -2068,13 +2060,13 @@ class YumBase(depsolve.Depsolve):
if len(unmatched) > 0:
arg = unmatched[0] #only one in there
- self.verbose_logger.debug(_('Checking for virtual provide or file-provide for %s'),
- arg)
+ vdbg(_('Checking for virtual provide or file-provide for %s'),
+ arg)
try:
mypkgs = self.returnPackagesByDep(arg)
except yum.Errors.YumBaseError, e:
- self.logger.critical(_('No Match for argument: %s') % arg)
+ crit(_('No Match for argument: %s') % arg)
else:
if mypkgs:
pkgs.extend(self.bestPackagesFromList(mypkgs))
@@ -2142,8 +2134,7 @@ class YumBase(depsolve.Depsolve):
for po in pkgs:
if self.tsInfo.exists(pkgtup=po.pkgtup):
if self.tsInfo.getMembersWithState(po.pkgtup, TS_INSTALL_STATES):
- self.verbose_logger.log(logginglevels.DEBUG_1,
- _('Package: %s - already in transaction set'), po)
+ vdbg1(_('Package: %s - already in transaction set'), po)
tx_return.extend(self.tsInfo.getMembers(pkgtup=po.pkgtup))
continue
@@ -2156,7 +2147,8 @@ class YumBase(depsolve.Depsolve):
# make sure it's not already installed
if self.rpmdb.contains(po=po):
if not self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES):
- self.verbose_logger.warning(_('Package %s already installed and latest version'), po)
+ vwarn(_('Package %s already installed and latest version'),
+ po)
continue
@@ -2197,7 +2189,7 @@ class YumBase(depsolve.Depsolve):
tx_return = []
if not po and not kwargs: # update everything (the easy case)
- self.verbose_logger.log(logginglevels.DEBUG_2, _('Updating Everything'))
+ vdbg2(_('Updating Everything'))
for (obsoleting, installed) in obsoletes:
obsoleting_pkg = self.getPackageObject(obsoleting)
installed_pkg = self.rpmdb.searchPkgTuple(installed)[0]
@@ -2209,8 +2201,8 @@ class YumBase(depsolve.Depsolve):
for (new, old) in updates:
if self.tsInfo.isObsoleted(pkgtup=old):
- self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
- old)
+ vdbg2(_('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),
+ old)
else:
updating_pkg = self.getPackageObject(new)
updated_pkg = self.rpmdb.searchPkgTuple(old)[0]
@@ -2281,7 +2273,7 @@ class YumBase(depsolve.Depsolve):
txmbr.setAsDep(requiringPo)
tx_return.append(txmbr)
if self.tsInfo.isObsoleted(obsoleted):
- self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
+ vdbg2(_('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
else:
txmbr = self.tsInfo.addObsoleted(obsoleted_pkg, available_pkg)
tx_return.append(txmbr)
@@ -2337,10 +2329,10 @@ class YumBase(depsolve.Depsolve):
try:
depmatches = self.returnInstalledPackagesByDep(arg)
except yum.Errors.YumBaseError, e:
- self.logger.critical(_('%s') % e)
+ crit(_('%s') % e)
if not depmatches:
- self.logger.critical(_('No Match for argument: %s') % arg)
+ crit(_('No Match for argument: %s') % arg)
else:
pkgs.extend(depmatches)
@@ -2352,7 +2344,7 @@ class YumBase(depsolve.Depsolve):
ver=nevra_dict['version'], rel=nevra_dict['release'])
if len(pkgs) == 0:
- self.logger.warning(_("No package matched to remove"))
+ warn(_("No package matched to remove"))
for po in pkgs:
txmbr = self.tsInfo.addErase(po)
@@ -2386,7 +2378,7 @@ class YumBase(depsolve.Depsolve):
try:
po = YumLocalPackage(ts=self.rpmdb.readOnlyTS(), filename=pkg)
except Errors.MiscError:
- self.logger.critical(_('Cannot open file: %s. Skipping.'), pkg)
+ crit(_('Cannot open file: %s. Skipping.'), pkg)
return tx_return
self.verbose_logger.log(logginglevels.INFO_2,
_('Examining %s: %s'), po.localpath, po)
@@ -2396,7 +2388,7 @@ class YumBase(depsolve.Depsolve):
# go through each package
if len(installedByKey) == 0: # nothing installed by that name
if updateonly:
- self.logger.warning(_('Package %s not installed, cannot update it. Run yum install to install it instead.'), po.name)
+ warn(_('Package %s not installed, cannot update it. Run yum install to install it instead.'), po.name)
return tx_return
else:
installpkgs.append(po)
@@ -2521,7 +2513,7 @@ class YumBase(depsolve.Depsolve):
ts = rpmUtils.transaction.TransactionWrapper(self.conf.installroot)
for keyurl in keyurls:
- self.logger.info(_('Retrieving GPG key from %s') % keyurl)
+ info(_('Retrieving GPG key from %s'), keyurl)
# Go get the GPG key from the given URL
try:
@@ -2544,12 +2536,13 @@ class YumBase(depsolve.Depsolve):
# Check if key is already installed
if misc.keyInstalled(ts, keyid, timestamp) >= 0:
- self.logger.info(_('GPG key at %s (0x%s) is already installed') % (
- keyurl, hexkeyid))
+ info(_('GPG key at %s (0x%s) is already installed'),
+ keyurl, hexkeyid)
continue
# Try installing/updating GPG key
- self.logger.critical(_('Importing GPG key 0x%s "%s" from %s') % (hexkeyid, userid, keyurl.replace("file://","")))
+ crit(_('Importing GPG key 0x%s "%s" from %s'),
+ hexkeyid, userid, keyurl.replace("file://",""))
rc = False
if self.conf.assumeyes:
rc = True
@@ -2570,7 +2563,7 @@ class YumBase(depsolve.Depsolve):
_('Key import failed (code %d)') % result
misc.import_key_to_pubring(rawkey, po.repo.cachedir)
- self.logger.info(_('Key imported successfully'))
+ info(_('Key imported successfully'))
key_installed = True
if not key_installed:
@@ -2584,7 +2577,7 @@ class YumBase(depsolve.Depsolve):
# Check if the newly installed keys helped
result, errmsg = self.sigCheckPkg(po)
if result != 0:
- self.logger.info(_("Import of key(s) didn't help, wrong key(s)?"))
+ info(_("Import of key(s) didn't help, wrong key(s)?"))
raise Errors.YumBaseError, errmsg
def _limit_installonly_pkgs(self):
if self.conf.installonly_limit < 1 :
diff --git a/yum/logginglevels.py b/yum/logginglevels.py
index ce7a92c..6b56131 100644
--- a/yum/logginglevels.py
+++ b/yum/logginglevels.py
@@ -23,6 +23,7 @@ import socket
import sys
import logging
import logging.handlers
+import time
INFO_1 = 19
INFO_2 = 18
@@ -167,3 +168,95 @@ def setLoggingApp(app):
if syslog:
syslogformatter = logging.Formatter("yum(%s): "% (app,) + "%(message)s")
syslog.setFormatter(syslogformatter)
+
+
+class EasyLogger:
+ """ Smaller to use logger for yum, wraps "logging.getLogger" module. """
+
+ def __init__(self, name="main"):
+ self.name = name
+ self.logger = logging.getLogger(name)
+
+ def info(msg, *args):
+ """ Log a message as info. """
+
+ self.logger.info(msg % args)
+
+ def info1(msg, *args):
+ """ Log a message as log.INFO_1. """
+
+ self.logger.log(logginglevels.INFO_1, msg % args)
+
+ def info2(msg, *args):
+ """ Log a message as log.INFO_2. """
+
+ self.logger.log(logginglevels.INFO_2, msg % args)
+
+ def warn(msg, *args):
+ """ Log a message as warning. """
+
+ self.logger.warning(msg % args)
+
+ def err(msg, *args):
+ """ Log a message as error. """
+
+ self.logger.error(msg % args)
+
+ def crit(msg, *args):
+ """ Log a message as critical. """
+
+ self.logger.critical(msg % args)
+
+ def dbg(msg, *args):
+ """ Log a message as debug. """
+
+ self.logger.debug(msg % args)
+
+ def dbg_tm(oldtm, msg, *args):
+ """ Log a message as debug, with a timestamp delta. """
+
+ now = time.time()
+ out = msg % args
+ self.logger.debug(out + " time: %.4f" (now - old_tm))
+
+ def dbg1(msg, *args):
+ """ Log a message as log.DEBUG_1. """
+
+ self.logger.log(DEBUG_1, msg % args)
+
+ def dbg2(msg, *args):
+ """ Log a message as log.DEBUG_2. """
+
+ self.logger.log(DEBUG_2, msg % args)
+
+ def dbg3(msg, *args):
+ """ Log a message as log.DEBUG_3. """
+
+ self.logger.log(DEBUG_3, msg % args)
+
+log = EasyLogger(logging.getLogger("yum.YumBase"))
+vlog = EasyLogger(logging.getLogger("yum.verbose.YumBase"))
+
+info = log.info
+info1 = log.info1
+info2 = log.info2
+warn = log.warn
+err = log.err
+crit = log.crit
+dbg = log.dbg
+dbg1 = log.dbg1
+dbg2 = log.dbg2
+dbg3 = log.dbg3
+dbg_tm = log.dbgtm
+
+vinfo = vlog.info
+vinfo1 = vlog.info1
+vinfo2 = vlog.info2
+vwarn = vlog.warn
+verr = vlog.err
+vcrit = vlog.crit
+vdbg = vlog.dbg
+vdbg1 = vlog.dbg1
+vdbg2 = vlog.dbg2
+vdbg3 = vlog.dbg3
+vdbg_tm = vlog.dbgtm
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Yum-devel mailing list [email protected] https://lists.dulug.duke.edu/mailman/listinfo/yum-devel
