# -*- coding: utf-8 -*-
#
-# Copyright (C) 2008-2017 EDF R&D
+# Copyright (C) 2008-2021 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
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
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 : Aidsm.log, niveau NOTSET) :
import ExtendedLogging ; ExtendedLogging.ExtendedLogging().setLogfile()
Si on veut changer le nom du fichier ou le niveau global de message, il faut
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")
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( "" )
def setLogfile(self, filename=LOGFILE, filemode="w", level=logging.NOTSET):
"""
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')