From f6e2fc215b2336eef5df4af9a1aa2ad64b300ecf Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Thu, 13 Oct 2016 18:16:42 +0000
Subject: [PATCH] fixed logging for new utilities

---
 .../aps_user_db/cli/updateUserFromApsDbCli.py | 22 ++++++++++++-------
 .../cli/updateUsersFromApsDbCli.py            |  5 ++++-
 .../dm/common/utility/configurationManager.py |  2 +-
 .../dm/common/utility/loggingManager.py       | 19 ++++++++--------
 4 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/src/python/dm/aps_user_db/cli/updateUserFromApsDbCli.py b/src/python/dm/aps_user_db/cli/updateUserFromApsDbCli.py
index c23b4280..bf7327db 100755
--- a/src/python/dm/aps_user_db/cli/updateUserFromApsDbCli.py
+++ b/src/python/dm/aps_user_db/cli/updateUserFromApsDbCli.py
@@ -7,6 +7,7 @@ from dm.common.exceptions.invalidArgument import InvalidArgument
 from dm.common.cli.dmCli import DmCli
 from dm.common.utility.ldapUserManager import LdapUserManager
 from dm.common.utility.configurationManager import ConfigurationManager
+from dm.common.utility.loggingManager import LoggingManager
 from dm.aps_user_db.api.apsUserDbApi import ApsUserDbApi
 
 class UpdateUserFromApsDbCli(DmCli):
@@ -35,28 +36,33 @@ Description:
     Updates user in DM LDAP and database using information from APS DB. 
         """)
         ConfigurationManager.getInstance().setConfigFile(self.options.configFile)
+        LoggingManager.getInstance().configure()
         self.checkArgs()
         apsUserDbApi = ApsUserDbApi()
         badge = self.getBadge()
         username = 'd%s' % badge
+        self.logger.debug('Retrieving APS user with badge %s' % badge)
         apsUser = apsUserDbApi.getApsUserByBadgeNumber(badge)
-        #print 'APS User Info: ', apsUser.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
-        print 'APS User Info: ', apsUser
-        print 
+        self.logger.info('APS User Info: %s' % apsUser)
+        print('APS User Info: %s\n' % apsUser)
         ldapUserManager = LdapUserManager.createInstance()
         try:
             self.logger.debug('Modifying LDAP user with badge %s: %s' % (badge, apsUser['name']))
             ldapUser = ldapUserManager.getUserInfo(username)
-            print 'LDAP User Info (before update): ', ldapUser
-            print 'LDAP User Password Hash (before update): ', ldapUserManager.decodePasswordHash(ldapUser.getUserPassword())
-            print
+            self.logger.info('LDAP User Info (before update): %s' % ldapUser)
+            self.logger.info('LDAP User Password Hash (before update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
+            print('LDAP User Info (before update): %s' % ldapUser)
+            print('LDAP User Password Hash (before update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
+
             ldapUserManager.modifyUserInfo(username, apsUser)
             ldapUser = ldapUserManager.getUserInfo(username)
         except ObjectNotFound, ex:
             self.logger.debug('User with badge %s does not exist, creating it' % (badge))
             ldapUser = ldapUserManager.createUserInfo(username, apsUser)
-        print 'LDAP User Info (after update): ', ldapUser
-        print 'LDAP User Password Hash (after update): ', ldapUserManager.decodePasswordHash(ldapUser.getUserPassword())
+        self.logger.info('LDAP User Info (after update): %s' % ldapUser)
+        self.logger.info('LDAP User Password Hash (after update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
+        print('LDAP User Info (after update): %s' % ldapUser)
+        print('LDAP User Password Hash (after update): %s\n' % ldapUserManager.decodePasswordHash(ldapUser.getUserPassword()))
 
 #######################################################################
 # Run command.
diff --git a/src/python/dm/aps_user_db/cli/updateUsersFromApsDbCli.py b/src/python/dm/aps_user_db/cli/updateUsersFromApsDbCli.py
index 8da0baef..991823ba 100755
--- a/src/python/dm/aps_user_db/cli/updateUsersFromApsDbCli.py
+++ b/src/python/dm/aps_user_db/cli/updateUsersFromApsDbCli.py
@@ -8,6 +8,7 @@ from dm.common.exceptions.objectAlreadyExists import ObjectAlreadyExists
 from dm.common.cli.dmCli import DmCli
 from dm.common.db.api.userDbApi import UserDbApi 
 from dm.common.utility.configurationManager import ConfigurationManager
+from dm.common.utility.loggingManager import LoggingManager
 from dm.common.utility.ldapUserManager import LdapUserManager
 from dm.aps_user_db.api.apsUserDbApi import ApsUserDbApi
 from dm.ds_web_service.api.dsRestApiFactory import DsRestApiFactory
@@ -35,8 +36,10 @@ class UpdateUsersFromApsDbCli(DmCli):
 Description:
     Updates all users in DM LDAP and database using information from APS DB. This command by default uses DM DB to determine whether or not user needs to be created or updated. If the --without-dm-db flag is set, DM DB will not be used nor it will be updated.
         """)
-        self.checkArgs()
         ConfigurationManager.getInstance().setConfigFile(self.options.configFile)
+        LoggingManager.getInstance().configure()
+        self.checkArgs()
+
         self.logger.debug('Starting sync process')
         apsUserDbApi = ApsUserDbApi()
         ldapUserManager = LdapUserManager.createInstance()
diff --git a/src/python/dm/common/utility/configurationManager.py b/src/python/dm/common/utility/configurationManager.py
index 075e9c9e..07456577 100755
--- a/src/python/dm/common/utility/configurationManager.py
+++ b/src/python/dm/common/utility/configurationManager.py
@@ -30,7 +30,7 @@ DEFAULT_DM_FILE_LOG_LEVEL = 'INFO'
 #DEFAULT_DM_LOG_RECORD_FORMAT = '%(asctime)s,%(msecs)03d [%(levelname)s] %(module)s:%(lineno)d %(user)s@%(host)s %(name)s (%(process)d): %(message)s'
 #DEFAULT_DM_LOG_RECORD_FORMAT = '%(asctime)s,%(msecs)03d %(levelname)s %(module)s:%(lineno)d %(process)d:  %(message)s'
 DEFAULT_DM_LOG_RECORD_FORMAT = '%(asctime)s,%(msecs)03d %(levelname)s %(process)d:  %(message)s'
-DEFAULT_DM_LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
+DEFAULT_DM_LOG_DATE_FORMAT = '%Y/%m/%d %H:%M:%S'
 
 DEFAULT_DM_CHERRYPY_LOG_LEVEL = 'ERROR'
 DEFAULT_DM_CHERRYPY_LOG_FILE = '%s/var/log/%s.%s.cherrypy.error'     # requires install dir/db name/service name
diff --git a/src/python/dm/common/utility/loggingManager.py b/src/python/dm/common/utility/loggingManager.py
index 95c955f3..64b67d5d 100755
--- a/src/python/dm/common/utility/loggingManager.py
+++ b/src/python/dm/common/utility/loggingManager.py
@@ -91,7 +91,7 @@ class LoggingManager:
             raise ConfigurationError('"%s" is not valid log level' % levelStr)
 
     # Configure log handlers.
-    def configureHandlers(self):
+    def configure(self):
         """ Configure log handlers from the config file. """
         cm = ConfigurationManager.getInstance()
         configFile = cm.getConfigFile()
@@ -100,15 +100,16 @@ class LoggingManager:
 
         # Console handler.
         defaults = { 
-            'level' : cm.getConsoleLogLevel(),
-            'format' : cm.getLogRecordFormat(),
-            'dateFormat' : cm.getLogDateFormat(),
-            'handler' : 'ConsoleLoggingHandler(sys.stdout,)'
+           'level' : cm.getConsoleLogLevel(),
+           'format' : cm.getLogRecordFormat(),
+           'dateFormat' : cm.getLogDateFormat(),
+           'handler' : 'ConsoleLoggingHandler(sys.stdout,)'
         }
-        consoleHandler = self.__configureHandler(configParser, 'ConsoleLogging', defaults)
+        if not self.consoleHandler:
+            consoleHandler = self.__configureHandler(configParser, 'ConsoleLogging', defaults)
 
-        if consoleHandler != None:
-            self.consoleHandler = consoleHandler
+            if consoleHandler != None:
+                self.consoleHandler = consoleHandler
 
         # File logging. 
         # Do not configure if log directory does not exist.
@@ -234,7 +235,7 @@ class LoggingManager:
     def getLogger(self, name='defaultLogger'):
         if not self.initFlag:
             self.initFlag = True
-            self.configureHandlers()
+            self.configure()
         logger = logging.getLogger(name)
         logger.setLevel(self.getLevel(name))
         return logger
-- 
GitLab