[yum-git] 2 commits - cli.py yum/config.py yum/__init__.py yum/logginglevels.py

James Antill james at linux.duke.edu
Thu Jun 12 06:10:46 UTC 2008


 cli.py               |    5 -
 yum/__init__.py      |  245 +++++++++++++++++++++++++--------------------------
 yum/config.py        |    8 +
 yum/logginglevels.py |  125 ++++++++++++++++++++++++--
 4 files changed, 250 insertions(+), 133 deletions(-)

New commits:
commit ea5fe7201097c0507bcb1fc9d18c43f8d3c83ce0
Author: James Antill <james at and.org>
Date:   Thu Jun 12 02:10:38 2008 -0400

    Remove self.logger and self.verbose_logger from just __init__

diff --git a/yum/__init__.py b/yum/__init__.py
index 36a99c2..0232c79 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -211,7 +211,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))
+        vdebug_tm(conf_st, 'Config time')
         self.plugins.run('init')
         return self._conf
         
@@ -262,14 +262,14 @@ class YumBase(depsolve.Depsolve):
                 break
 
             if bad:
-                self.logger.warning("Bad id for repo: %s, byte = %s %d" %
-                                    (section, bad, section.find(byte)))
+                warning("Bad id 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)
+                warning(e)
                 continue
             else:
                 thisrepo.repo_config_age = repo_age
@@ -283,7 +283,7 @@ class YumBase(depsolve.Depsolve):
             try:
                 self._repos.add(thisrepo)
             except Errors.RepoError, e:
-                self.logger.warning(e)
+                warning(e)
         
     def getReposFromConfig(self):
         """read in repositories from config main and .repo files"""
@@ -319,8 +319,9 @@ 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)
+            # FIXME: Use critical? or exception?
+            log.error(_('Repository %r is missing name in configuration, '
+                        'using id'), section)
 
         # Set attributes not from the config file
         repo.basecachedir = self.conf.cachedir
@@ -372,9 +373,9 @@ class YumBase(depsolve.Depsolve):
 
         if self._rpmdb is None:
             rpmdb_st = time.time()
-            self.verbose_logger.debug(_('Reading Local RPMDB'))
+            vdebug(_('Reading Local RPMDB'))
             self._rpmdb = rpmsack.RPMDBPackageSack(root=self.conf.installroot)
-            self.verbose_logger.debug('rpmdb time: %0.3f' % (time.time() - rpmdb_st))
+            vdebug_tm(rpmdb_st, 'rpmdb time')
         return self._rpmdb
 
     def closeRpmDB(self):
@@ -402,7 +403,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))        
+            vdebug_tm(repo_st, 'repo time')
         return self._repos
 
     def _delRepos(self):
@@ -427,7 +428,7 @@ class YumBase(depsolve.Depsolve):
         else:
             repos = self.repos.findRepos(thisrepo)
         
-        self.verbose_logger.debug(_('Setting up Package Sacks'))
+        vdebug(_('Setting up Package Sacks'))
         sack_st = time.time()
         if not archlist:
             archlist = rpmUtils.arch.getArchList()
@@ -454,7 +455,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))
+        vdebug_tm(sack_st, 'pkgsack time')
         return self._pkgSack
     
     
@@ -488,7 +489,7 @@ class YumBase(depsolve.Depsolve):
         if self._up:
             return self._up
         
-        self.verbose_logger.debug(_('Building updates object'))
+        vdebug(_('Building updates object'))
 
         up_st = time.time()
 
@@ -499,23 +500,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))
+            vdebug_tm(obs_init, 'up:Obs Init time')
             
         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))
+        vdebug_tm(up_pr_st, 'up:simple updates time')
 
         if self.conf.obsoletes:
             obs_st = time.time()
             self._up.doObsoletes()
-            self.verbose_logger.debug('up:obs time: %0.3f' % (time.time() - obs_st))
+            vdebug_tm(obs_st, 'up:obs time')
 
         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))        
+        vdebug_tm(cond_up_st, 'up:condense time')
+        vdebug_tm(up_st, 'updates time')
         return self._up
     
     def doGroupSetup(self):
@@ -543,7 +544,7 @@ class YumBase(depsolve.Depsolve):
             return self._comps
 
         group_st = time.time()            
-        self.verbose_logger.debug(_('Getting group metadata'))
+        vdebug(_('Getting group metadata'))
         reposWithGroups = []
         self.repos.doSetup()
         for repo in self.repos.listGroupsEnabled():
@@ -568,8 +569,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)
+            vdebug1(_('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'):
@@ -579,7 +579,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)
+                critical(msg)
             else:
                 repo.groups_added = True
 
@@ -587,7 +587,7 @@ class YumBase(depsolve.Depsolve):
             raise Errors.GroupsError, _('No Groups Available in any repository')
 
         self._comps.compile(self.rpmdb.simplePkgList())
-        self.verbose_logger.debug('group time: %0.3f' % (time.time() - group_st))                
+        vdebug_tm(group_st, 'group time')
         return self._comps
     
     # properties so they auto-create themselves with defaults
@@ -634,8 +634,7 @@ class YumBase(depsolve.Depsolve):
                     necessary = True
 
         if necessary:
-            msg = _('Importing additional filelist information')
-            self.verbose_logger.log(logginglevels.INFO_2, msg)
+            vinfo2(_('Importing additional filelist information'))
             self.repos.populateSack(mdtype='filelists')
            
     def buildTransaction(self):
@@ -664,7 +663,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))
+        vdebug_tm(ds_st, 'Depsolve time')
         return rescode, restring
 
     def _skipPackagesWithProblems(self, rescode, restring):
@@ -686,7 +685,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)
+            vdebug(_("Skip-broken round %i"), count)
             depTree = self._buildDepTree()
             startTs = set(self.tsInfo)
             toRemove = set()
@@ -709,16 +708,15 @@ 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:'))
+            vdebug(_("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(_("    %s from %s"), str(po),po.repo.id)
         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
@@ -796,7 +794,7 @@ class YumBase(depsolve.Depsolve):
             pass
         elif len(errors) == 0:
             errstring = _('Warning: scriptlet or other non-fatal errors occurred during transaction.')
-            self.verbose_logger.debug(errstring)
+            vdebug(errstring)
         else:
             raise Errors.YumBaseError, errors
                           
@@ -810,7 +808,7 @@ class YumBase(depsolve.Depsolve):
                     try:
                         os.unlink(fn)
                     except (IOError, OSError), e:
-                        self.logger.critical(_('Failed to remove transaction file %s') % fn)
+                        critical(_('Failed to remove transaction file %s'), fn)
 
         self.plugins.run('posttrans')
     
@@ -850,8 +848,8 @@ 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)
+                    vdebug3(_('excluding for cost: %s from %s'),
+                            pkg, pkg.repo.id)
                     pkg.repo.sack.delPackage(pkg)
             
 
@@ -881,21 +879,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)
+            vdebug('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.
@@ -910,22 +907,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)
+                vdebug(_('Keeping included package %s'), po)
                 continue
             else:
                 rmlist.append(po)
         
         for po in rmlist:
-            self.verbose_logger.debug(_('Removing unmatched package %s'), po)
+            vdebug(_('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"""
@@ -1087,7 +1083,7 @@ class YumBase(depsolve.Depsolve):
                         adderror(po, _('package fails checksum but caching is '
                             'enabled for %s') % po.repo.id)
                 else:
-                    self.verbose_logger.debug(_("using local copy of %s") %(po,))
+                    vdebug(_("using local copy of %s"), po)
                     continue
                         
             remote_pkgs.append(po)
@@ -1294,11 +1290,10 @@ class YumBase(depsolve.Depsolve):
             try:
                 os.unlink(fn)
             except OSError, e:
-                self.logger.warning(_('Cannot remove %s'), fn)
+                warning(_('Cannot remove %s'), fn)
                 continue
             else:
-                self.verbose_logger.log(logginglevels.DEBUG_4,
-                    _('%s removed'), fn)
+                vdebug4(_('%s removed'), fn)
         
     def cleanHeaders(self):
         exts = ['hdr']
@@ -1334,11 +1329,10 @@ class YumBase(depsolve.Depsolve):
             try:
                 os.unlink(item)
             except OSError, e:
-                self.logger.critical(_('Cannot remove %s file %s'), filetype, item)
+                critical(_('Cannot remove %s file %s'), filetype, item)
                 continue
             else:
-                self.verbose_logger.log(logginglevels.DEBUG_4,
-                    _('%s file %s removed'), filetype, item)
+                vdebug4(_('%s file %s removed'), filetype, item)
                 removed+=1
         msg = _('%d %s files removed') % (removed, filetype)
         return 0, [msg]
@@ -1393,14 +1387,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])
+                    vdebug1(_('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)
+                    vdebug1(_('Nothing matches %s.%s %s:%s-%s from update'),
+                            n,a,e,v,r)
 
         # installed only
         elif pkgnarrow == 'installed':
@@ -1629,12 +1622,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))
+            vdebug1(_('Searching %d packages'), len(where))
             
             for po in where:
-                self.verbose_logger.log(logginglevels.DEBUG_2,
-                    _('searching package %s'), po)
+                vdebug2(_('searching package %s'), po)
                 tmpvalues = []
                 
                 if usedDepString:
@@ -1645,15 +1636,13 @@ class YumBase(depsolve.Depsolve):
                     tmpvalues.append(arg)
                     
                 if isglob:
-                    self.verbose_logger.log(logginglevels.DEBUG_2,
-                        _('searching in file entries'))
+                    vdebug2(_('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'))
+                vdebug2(_('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:
@@ -1782,9 +1771,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)
+                            vdebug1(_("package %s was not marked in group %s"),
+                                    txmbr.po, grpid)
                             continue
                         
                         # if there aren't any other groups mentioned then remove the pkg
@@ -1821,13 +1809,13 @@ 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)
+                vdebug2(_('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)
+                    vdebug(_('No package named %s available to be installed'),
+                           pkg)
                 else:
                     txmbrs_used.extend(txmbrs)
                     for txmbr in txmbrs:
@@ -1876,9 +1864,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)
+                            vdebug1(_("package %s was not marked in group %s"),
+                                    txmbr.po, grpid)
                             continue
                         
                         # if there aren't any other groups mentioned then remove the pkg
@@ -2135,13 +2122,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)
+                    vdebug(_('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)
+                        critical(_('No Match for argument: %s'), arg)
                     else:
                         if mypkgs:
                             pkgs.extend(self.bestPackagesFromList(mypkgs))
@@ -2209,8 +2196,7 @@ class YumBase(depsolve.Depsolve):
                 found = False
                 for txmbr in self.tsInfo.getMembersWithState(po.pkgtup, TS_INSTALL_STATES):
                     found = True
-                    self.verbose_logger.log(logginglevels.DEBUG_1,
-                        _('Package: %s  - already in transaction set'), po)
+                    vdebug1(_('Package: %s  - already in transaction set'), po)
                     result.addMember(txmbr) # XXX ERASE members???
                 if found:
                     continue
@@ -2224,14 +2210,14 @@ 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)
+                    vwarning(_('Package %s already installed and latest version'), po)
                     continue
 
             # make sure we don't have a name.arch of this already installed
             # if so pass it to update b/c it should be able to figure it out
             if self.rpmdb.contains(name=po.name, arch=po.arch) and not self.allowedMultipleInstalls(po):
                 if not self.tsInfo.getMembersWithState(po.pkgtup, TS_REMOVE_STATES):
-                    self.verbose_logger.warning(_('Package matching %s already installed. Checking for update.'), po)            
+                    vwarning(_('Package matching %s already installed. Checking for update.'), po)            
                     res = self.update(po=po)
                     result.add(res)
                     continue
@@ -2242,7 +2228,7 @@ class YumBase(depsolve.Depsolve):
             if thispkgobsdict.has_key(po.pkgtup):
                 obsoleting = thispkgobsdict[po.pkgtup][0]
                 obsoleting_pkg = self.getPackageObject(obsoleting)
-                self.verbose_logger.warning(_('Package %s is obsoleted by %s, trying to install %s instead'),
+                vwarning(_('Package %s is obsoleted by %s, trying to install %s instead'),
                     po.name, obsoleting_pkg.name, obsoleting_pkg)               
                 self.install(po=obsoleting_pkg) # XXX result???
                 continue
@@ -2275,7 +2261,7 @@ class YumBase(depsolve.Depsolve):
 
         result = transactioninfo.AdditionResult()
         if not po and not kwargs: # update everything (the easy case)
-            self.verbose_logger.log(logginglevels.DEBUG_2, _('Updating Everything'))
+            vdebug2(_('Updating Everything'))
             for (obsoleting, installed) in obsoletes:
                 obsoleting_pkg = self.getPackageObject(obsoleting)
                 installed_pkg =  self.rpmdb.searchPkgTuple(installed)[0]
@@ -2287,7 +2273,7 @@ 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'), 
+                    vdebug2(_('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
                         old)
                 else:
                     updating_pkg = self.getPackageObject(new)
@@ -2378,7 +2364,7 @@ class YumBase(depsolve.Depsolve):
                         res.primary.setAsDep(requiringPo)
                     result.add(res)
                     if self.tsInfo.isObsoleted(obsoleted):
-                        self.verbose_logger.log(logginglevels.DEBUG_2, _('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
+                        vdebug2(_('Package is already obsoleted: %s.%s %s:%s-%s'), obsoleted)
                     else:
                         res = self.tsInfo.addObsoleted(obsoleted_pkg, available_pkg)
                         result.add(res)
@@ -2387,8 +2373,8 @@ class YumBase(depsolve.Depsolve):
             for updating in self.up.updatesdict.get(installed_pkg.pkgtup, []):
                 updating_pkg = self.getPackageObject(updating)
                 if self.tsInfo.isObsoleted(installed_pkg.pkgtup):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
-                                            installed_pkg.pkgtup)                                               
+                    vdebug2(_('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                            installed_pkg.pkgtup)
                 else:
                     res = self.tsInfo.addUpdate(updating_pkg, installed_pkg)
                     if requiringPo:
@@ -2399,11 +2385,11 @@ class YumBase(depsolve.Depsolve):
         for available_pkg in availpkgs:
             for updated in self.up.updating_dict.get(available_pkg.pkgtup, []):
                 if self.tsInfo.isObsoleted(updated):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
-                                            updated)
+                    vdebug2(_('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 
+                            updated)
                 elif self.tsInfo.getMembersWithState(updated, [TS_UPDATED]):
-                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'), 
-                                            updated)
+                    vdebug2(_('Not Updating Package that is already updated: %s.%s %s:%s-%s'), 
+                            updated)
                 
                 else:
                     updated_pkg =  self.rpmdb.searchPkgTuple(updated)[0]
@@ -2455,10 +2441,10 @@ class YumBase(depsolve.Depsolve):
                     try:
                         depmatches = self.returnInstalledPackagesByDep(arg)
                     except yum.Errors.YumBaseError, e:
-                        self.logger.critical(_('%s') % e)
+                        critical(_('%s'), e)
                     
                     if not depmatches:
-                        self.logger.critical(_('No Match for argument: %s') % arg)
+                        critical(_('No Match for argument: %s'), arg)
                     else:
                         pkgs.extend(depmatches)
                 
@@ -2474,7 +2460,7 @@ class YumBase(depsolve.Depsolve):
                     # probably just a kwarg of 'silence_warnings' or something
                     # b/c when this is called from groupRemove() it makes a lot of
                     # garbage noise
-                    self.logger.warning(_("No package matched to remove"))
+                    warning(_("No package matched to remove"))
 
         for po in pkgs:
             res = self.tsInfo.addErase(po)
@@ -2508,17 +2494,16 @@ 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)
+                critical(_('Cannot open file: %s. Skipping.'), pkg)
                 return result
-            self.verbose_logger.log(logginglevels.INFO_2,
-                _('Examining %s: %s'), po.localpath, po)
+            vdebug2(_('Examining %s: %s'), po.localpath, po)
 
         # everything installed that matches the name
         installedByKey = self.rpmdb.searchNevra(name=po.name)
         # 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)
+                warning(_('Package %s not installed, cannot update it. Run yum install to install it instead.'), po.name)
                 return result
             else:
                 installpkgs.append(po)
@@ -2551,24 +2536,21 @@ class YumBase(depsolve.Depsolve):
            toexc = exactmatch + matched
 
         if po in toexc:
-           self.verbose_logger.debug(_('Excluding %s'), po)
+           vdebug(_('Excluding %s'), po)
            return result
 
         for po in installpkgs:
-            self.verbose_logger.log(logginglevels.INFO_2,
-                _('Marking %s to be installed'), po.localpath)
+            vinfo2(_('Marking %s to be installed'), po.localpath)
             self.localPackages.append(po)
             result.add(self.install(po=po))
 
         for (po, oldpo) in updatepkgs:
-            self.verbose_logger.log(logginglevels.INFO_2,
-                _('Marking %s as an update to %s'), po.localpath, oldpo)
+            vinfo2(_('Marking %s as an update to %s'), po.localpath, oldpo)
             self.localPackages.append(po)
             result.add(self.tsInfo.addUpdate(po, oldpo))
 
         for po in donothingpkgs:
-            self.verbose_logger.log(logginglevels.INFO_2,
-                _('%s: does not update installed package.'), po.localpath)
+            vinfo2(_('%s: does not update installed package.'), po.localpath)
 
         return result
 
@@ -2596,8 +2578,8 @@ class YumBase(depsolve.Depsolve):
             # for now, banned and dropped.
             if self.allowedMultipleInstalls(item.po):
                 self.tsInfo.remove(item.pkgtup)
-                msg = _("Package %s is allowed multiple installs, skipping") % item.po
-                self.verbose_logger.log(logginglevels.INFO_2, msg)
+                vinfo2(_("Package %s is allowed multiple installs, skipping"),
+                       item.po)
                 continue
             
             members = self.install(name=item.name, arch=item.arch,
@@ -2650,7 +2632,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:
@@ -2676,12 +2658,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://","")))
+                critical(_('Importing GPG key 0x%s "%s" from %s'),
+                         hexkeyid, userid, keyurl.replace("file://",""))
                 rc = False
                 if self.conf.assumeyes:
                     rc = True
@@ -2702,7 +2685,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:
@@ -2716,7 +2699,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):
@@ -2834,8 +2817,7 @@ class YumBase(depsolve.Depsolve):
         ''' Do the RPM test transaction '''
         # This can be overloaded by a subclass.    
         if self.conf.rpm_check_debug:
-            self.verbose_logger.log(logginglevels.INFO_2, 
-                 _('Running rpm_check_debug'))
+            vinfo2(_('Running rpm_check_debug'))
             msgs = self._run_rpm_check_debug()
             if msgs:
                 retmsgs = [_('ERROR with rpm_check_debug vs depsolve:')]
commit 869ae161bcf6ce79e3fd17105004c90c6a7f5c02
Author: James Antill <james at and.org>
Date:   Thu Jun 12 01:45:21 2008 -0400

     Hand merge of initial "kinda API breaking" logging.
    
      Mostly "full" but usable names.
      Add a level for a clean quiet/normal/verbose/debug* break.
      Add debug_tm() shortcut for timestamp based timing.
      Add constants to logging levels and get rid of magic numbers from elsewhere.
      Import everything into yum.* so plugins/etc. can use it easily
    
     Nothing uses the actual functions, yet.

diff --git a/cli.py b/cli.py
index dcb8e96..f5e4767 100644
--- a/cli.py
+++ b/cli.py
@@ -167,9 +167,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         root = self.optparser.getRoot(opts)
 
         if opts.quiet:
-            opts.debuglevel = 0
+            opts.debuglevel = logginglevels.DEBUG_QUIET_LEVEL
         if opts.verbose:
-            opts.debuglevel = opts.errorlevel = 6
+            opts.debuglevel = logginglevels.DEBUG_VERBOSE_LEVEL
+            opts.errorlevel = logginglevels.ERROR_VERBOSE_LEVEL
        
         # Read up configuration options and initialise plugins
         try:
diff --git a/yum/__init__.py b/yum/__init__.py
index 1ec3890..36a99c2 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
 
@@ -80,6 +78,25 @@ __version__ = '3.2.16'
 # multiple YumBase() objects.
 default_grabber.opts.user_agent += " yum/" + __version__
 
+# Setup "yum" logging APIs. Can use via. "import yum; yum.log() ... "
+log  = logginglevels.EasyLogger("yum.YumBase")
+vlog = logginglevels.EasyLogger("yum.verbose.YumBase")
+
+# Quick functions ... so everything isn't prefxied with log.
+(info, warn, critical)   = (log.info, log.warn, log.critical)
+(info1, info2, info3)    = (log.info2, log.info1, log.info3)
+(debug, debug_tm)        = (log.debug, log.debug_tm)
+(debug1, debug2)         = (log.debug1, log.debug2)
+(debug3, debug4)         = (log.debug3, log.debug4)
+
+# dito. above, but for "verbose"
+(vinfo, vwarn, vcritical)   = (vlog.info, vlog.warn, vlog.critical)
+(vinfo1, vinfo2, vinfo3)    = (vlog.info2, vlog.info1, vlog.info3)
+(vdebug, vdebug_tm)         = (vlog.debug, vlog.debug_tm)
+(vdebug1, vdebug2)          = (vlog.debug1, vlog.debug2)
+(vdebug3, vdebug4)          = (vlog.debug3, vlog.debug4)
+verbose                     = vlog.verbose
+
 class YumBase(depsolve.Depsolve):
     """This is a primary structure and base class. It houses the objects and
        methods needed to perform most things in yum. It is almost an abstract
@@ -94,8 +111,10 @@ 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")
+        # FIXME: backwards compat. with plugins etc., remove?
+        self.logger         = log.logger
+        self.verbose_logger = vlog.logger
+
         self._repos = RepoStorage(self)
 
         # Start with plugins disabled
@@ -474,7 +493,7 @@ class YumBase(depsolve.Depsolve):
         up_st = time.time()
 
         self._up = rpmUtils.updates.Updates(self.rpmdb.simplePkgList(), self.pkgSack.simplePkgList())
-        if self.conf.debuglevel >= 6:
+        if self.conf.debuglevel >= logginglevels.DEBUG_UPDATES_LEVEL:
             self._up.debug = 1
         
         if self.conf.obsoletes:
diff --git a/yum/config.py b/yum/config.py
index eca8200..b2d5d59 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -558,8 +558,12 @@ class StartupConf(BaseConfig):
     required early in the initialisation process or before the other [main]
     options can be parsed. 
     '''
-    debuglevel = IntOption(2, 0, 10)
-    errorlevel = IntOption(2, 0, 10)
+    debuglevel = IntOption(logginglevels.DEBUG_NORMAL_LEVEL,
+                           logginglevels.DEBUG_MIN_LEVEL,
+                           logginglevels.DEBUG_MAX_LEVEL)
+    errorlevel = IntOption(logginglevels.ERROR_NORMAL_LEVEL,
+                           logginglevels.ERROR_MIN_LEVEL,
+                           logginglevels.ERROR_MAX_LEVEL)
 
     distroverpkg = Option('redhat-release')
     installroot = Option('/')
diff --git a/yum/logginglevels.py b/yum/logginglevels.py
index ce7a92c..3e00a4e 100644
--- a/yum/logginglevels.py
+++ b/yum/logginglevels.py
@@ -23,10 +23,17 @@ import socket
 import sys
 import logging
 import logging.handlers
+import time
 
-INFO_1 = 19
-INFO_2 = 18
+# logging.info() == 20
+INFO    = logging.INFO # Quiet
+assert INFO == 20
+INFO_1  = 19
+INFO_2  = 18 # Normal
+INFO_3  = 17 # Verbose
 
+DEBUG   = logging.DEBUG
+assert DEBUG == 10
 DEBUG_1 = 9
 DEBUG_2 = 8
 DEBUG_3 = 7
@@ -34,6 +41,7 @@ DEBUG_4 = 6
 
 logging.addLevelName(INFO_1, "INFO_1")
 logging.addLevelName(INFO_2, "INFO_2")
+logging.addLevelName(INFO_2, "INFO_3")
 
 logging.addLevelName(DEBUG_1, "DEBUG_1")
 logging.addLevelName(DEBUG_2, "DEBUG_2")
@@ -47,17 +55,37 @@ logging.raiseExceptions = False
 
 syslog = None
 
+DEBUG_QUIET_LEVEL   = 0
+DEBUG_NORMAL_LEVEL  = 2
+DEBUG_VERBOSE_LEVEL = 3
+DEBUG_DEBUG0_LEVEL  = 4
+DEBUG_DEBUG1_LEVEL  = 5
+DEBUG_DEBUG2_LEVEL  = 6
+DEBUG_DEBUG3_LEVEL  = 7
+DEBUG_DEBUG4_LEVEL  = 8
+DEBUG_UPDATES_LEVEL = DEBUG_DEBUG3_LEVEL
+
+DEBUG_MIN_LEVEL     = 0
+DEBUG_MAX_LEVEL     = DEBUG_DEBUG4_LEVEL
+
+ERROR_NORMAL_LEVEL  = 1
+ERROR_VERBOSE_LEVEL = 2
+
+ERROR_MIN_LEVEL     = 0
+ERROR_MAX_LEVEL     = ERROR_VERBOSE_LEVEL
+
 def logLevelFromErrorLevel(error_level):
     """ Convert an old-style error logging level to the new style. """
-    error_table = { -1 : __NO_LOGGING, 0 : logging.CRITICAL, 1 : logging.ERROR,
-        2 : logging.WARNING}
+    error_table = { -1 : __NO_LOGGING,
+                    0 : logging.CRITICAL, 1 : logging.ERROR, 2 :logging.WARNING}
     
     return __convertLevel(error_level, error_table)
 
 def logLevelFromDebugLevel(debug_level):
     """ Convert an old-style debug logging level to the new style. """
-    debug_table = {-1 : __NO_LOGGING, 0 : logging.INFO, 1 : INFO_1, 2 : INFO_2,
-        3 : logging.DEBUG, 4 : DEBUG_1, 5 : DEBUG_2, 6 : DEBUG_3, 7 : DEBUG_4}
+    debug_table = {-1 : __NO_LOGGING,
+                   0 : INFO,  1 : INFO_1,  2 : INFO_2,  3 : INFO_3,
+                   4 : DEBUG, 5 : DEBUG_1, 6 : DEBUG_2, 7 : DEBUG_3, 8 :DEBUG_4}
 
     return __convertLevel(debug_level, debug_table)
 
@@ -123,7 +151,7 @@ def doLoggingSetup(debuglevel, errorlevel):
     logger.addHandler(console_stderr)
    
     filelogger = logging.getLogger("yum.filelogging")
-    filelogger.setLevel(logging.INFO)
+    filelogger.setLevel(INFO)
     filelogger.propagate = False
 
     log_dev = '/dev/log'
@@ -167,3 +195,86 @@ 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(self, msg, *args):
+        """ Log a message as info. Output even in quiet mode. """
+
+        self.logger.info(msg % args)
+
+    def info1(self, msg, *args):
+        """ Log a message as log.INFO_1. Output in normal/verbose mode. """
+
+        self.logger.log(INFO_1, msg % args)
+
+    def info2(self, msg, *args):
+        """ Log a message as log.INFO_2. Output in normal/verbose mode. """
+
+        self.logger.log(INFO_2, msg % args)
+
+    def info3(self, msg, *args):
+        """ Log a message as log.INFO_3. Output in verbose mode. """
+
+        self.logger.log(INFO_3, msg % args)
+
+    def warn(self, msg, *args):
+        """ Log a message as warning. """
+
+        self.logger.warning(msg % args)
+
+    # NOTE: Is "error" worthwhile, it's either warning, critical or an exception
+    def error(self, msg, *args):
+        """ Log a message as error. """
+
+        self.logger.error(msg % args)
+
+    def critical(self, msg, *args):
+        """ Log a message as critical. """
+
+        self.logger.critical(msg % args)
+
+    def debug(self, msg, *args):
+        """ Log a message as debug. """
+
+        self.logger.debug(msg % args)
+
+    def debug_tm(self, oldtm, msg, *args):
+        """ Log a message as debug, with a timestamp delta. """
+
+        now = time.time()
+        out = msg % args
+        self.debug("%s: time=%.4f" (out, now - old_tm))
+
+    def debug1(self, msg, *args):
+        """ Log a message as log.DEBUG_1. """
+
+        self.logger.log(DEBUG_1, msg % args)
+
+    def debug2(self, msg, *args):
+        """ Log a message as log.DEBUG_2. """
+
+        self.logger.log(DEBUG_2, msg % args)
+
+    def debug3(self, msg, *args):
+        """ Log a message as log.DEBUG_3. """
+
+        self.logger.log(DEBUG_3, msg % args)
+
+    def debug4(self, msg, *args):
+        """ Log a message as log.DEBUG_4. """
+
+        self.logger.log(DEBUG_4, msg % args)
+
+    def isEnabledFor(self, level):
+        """ Wrap self.logger.isEnabledFor() """
+        return self.logger.isEnabledFor(level)
+
+    def verbose(self):
+        """ Is this logger in "yum verbose" mode. """
+        return self.isEnabledFor(INFO_3)



More information about the Yum-cvs-commits mailing list