Salome HOME
Minor documentation and code review corrections (38)
[modules/adao.git] / src / daComposant / daCore / ExtendedLogging.py
index 7f0fc5d501a464fbcc23bed42d3cb1509221660a..e09b785ce7d2c3e11e1ecd3298377222e4f17caa 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2008-2017 EDF R&D
+# Copyright (C) 2008-2023 EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -24,9 +24,8 @@
     Ce module permet de mettre en place un logging utilisable partout dans
     l'application, par défaut à la console, et si nécessaire dans un fichier.
 
-    Il doit être appelé en premier dans AssimilationStudy (mais pas directement
-    dans les applications utilisateurs), en l'important et en instanciant un
-    objet :
+    Il doit être appelé en premier dans Aidsm (mais pas directement dans les
+    applications utilisateurs), en l'important et en instanciant un objet :
         import ExtendedLogging ; ExtendedLogging.ExtendedLogging()
 
     Par défaut, seuls les messages du niveau WARNING ou au-delà sont disponibles
@@ -35,7 +34,7 @@
         import ExtendedLogging ; ExtendedLogging.ExtendedLogging(level=20)
 
     On peut éventuellement demander à l'objet de sortir aussi les messages dans
-    un fichier (noms par défaut : AssimilationStudy.log, niveau NOTSET) :
+    un fichier (noms par défaut : AdaoOutputLogfile.log, niveau NOTSET) :
         import ExtendedLogging ; ExtendedLogging.ExtendedLogging().setLogfile()
 
     Si on veut changer le nom du fichier ou le niveau global de message, il faut
@@ -76,9 +75,11 @@ __all__ = []
 import os
 import sys
 import logging
+import functools
+import time
 from daCore import PlatformInfo
 
-LOGFILE = os.path.join(os.path.abspath(os.curdir),"AssimilationStudy.log")
+LOGFILE = os.path.join(os.path.abspath(os.curdir),"AdaoOutputLogfile.log")
 
 # ==============================================================================
 class ExtendedLogging(object):
@@ -106,16 +107,20 @@ class ExtendedLogging(object):
         logging.info( "--------------------------------------------------" )
         logging.info( "Library availability:" )
         logging.info( "- Python.......: True" )
-        logging.info( "- Numpy........: True" )
+        logging.info( "- Numpy........: "+str(PlatformInfo.has_numpy) )
         logging.info( "- Scipy........: "+str(PlatformInfo.has_scipy) )
         logging.info( "- Matplotlib...: "+str(PlatformInfo.has_matplotlib) )
-        logging.info( "- Gnuplot......: "+str(PlatformInfo.has_scipy) )
+        logging.info( "- Gnuplot......: "+str(PlatformInfo.has_gnuplot) )
         logging.info( "- Sphinx.......: "+str(PlatformInfo.has_sphinx) )
         logging.info( "- Nlopt........: "+str(PlatformInfo.has_nlopt) )
         logging.info( "Library versions:" )
-        logging.info( "- Python.......:"+p.getPythonVersion() )
-        logging.info( "- Numpy........:"+p.getNumpyVersion() )
-        logging.info( "- Scipy........:"+p.getScipyVersion() )
+        logging.info( "- Python.......: "+p.getPythonVersion() )
+        logging.info( "- Numpy........: "+p.getNumpyVersion() )
+        logging.info( "- Scipy........: "+p.getScipyVersion() )
+        logging.info( "- Matplotlib...: "+p.getMatplotlibVersion() )
+        logging.info( "- Gnuplot......: "+p.getGnuplotVersion() )
+        logging.info( "- Sphinx.......: "+p.getSphinxVersion() )
+        logging.info( "- Nlopt........: "+p.getNloptVersion() )
         logging.info( "" )
 
     def setLogfile(self, filename=LOGFILE, filemode="w", level=logging.NOTSET):
@@ -145,6 +150,18 @@ class ExtendedLogging(object):
         """
         return logging.getLevelName( logging.getLogger().getEffectiveLevel() )
 
+# ==============================================================================
+def logtimer(f):
+    @functools.wraps(f)
+    def wrapper(*args, **kwargs):
+        start  = time.clock() # time.time()
+        result = f(*args, **kwargs)
+        end    = time.clock() # time.time()
+        msg    = 'TIMER Durée elapsed de la fonction utilisateur "{}": {:.3f}s'
+        logging.debug(msg.format(f.__name__, end-start))
+        return result
+    return wrapper
+
 # ==============================================================================
 if __name__ == "__main__":
-    print('\n AUTODIAGNOSTIC \n')
+    print('\n AUTODIAGNOSTIC\n')