Salome HOME
Utilisation d'une CAO sous xao avec des groupes
[modules/smesh.git] / src / Tools / blocFissure / gmu / initLog.py
index c9c78b30c42266c06f561435391ee04ccc488eaf..ee63bf2efc4dad911d0db63fc6467299d24619b0 100644 (file)
@@ -1,6 +1,25 @@
 # -*- coding: utf-8 -*-
+# Copyright (C) 2014-2020  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
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
 
 import logging
+import os
 
 debug = 10
 info = 20
@@ -9,71 +28,72 @@ error = 40
 critical = 50
 
 loglevel = warning
+logging.basicConfig(format='%(funcName)s[%(lineno)d] %(message)s',
+                    level=logging.WARNING)
+ch = None
+fh = None
 
-def setDebug(logfile=None):
-  global loglevel
+def setLogger(logfile, level, formatter):
+  global ch, fh
+  rootLogger = logging.getLogger('')
+  if fh is not None:
+    rootLogger.removeHandler(fh)
+    fh = None
+  if ch is not None:
+    rootLogger.removeHandler(ch)
+    ch = None
   if logfile:
-    logging.basicConfig(filename=logfile,
-                        format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.DEBUG)
+    if os.path.exists(logfile):
+      os.remove(logfile)
+    fh = logging.FileHandler(logfile)
+    rootLogger.addHandler(fh)
+    fh.setFormatter(formatter)
   else:
-    logging.basicConfig(format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.DEBUG)    
+    ch = logging.StreamHandler()
+    rootLogger.addHandler(ch)
+    ch.setFormatter(formatter)
+  rootLogger.setLevel(level)
+  
+  
+def setDebug(logfile=None):
+  global loglevel
   loglevel = debug
+  level = logging.DEBUG
+  formatter = logging.Formatter('%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s')
+  setLogger(logfile, level, formatter)
   logging.info('start Debug %s', loglevel)
 
 def setVerbose(logfile=None):
   global loglevel
-  if logfile:
-    logging.basicConfig(filename=logfile,
-                        format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.INFO)
-  else:
-    logging.basicConfig(format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.INFO)    
   loglevel = info
+  level = logging.INFO
+  formatter = logging.Formatter('%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s')
+  setLogger(logfile, level, formatter)
   logging.info('start Verbose %s', loglevel)
 
 def setRelease(logfile=None):
   global loglevel
-  if logfile:
-    logging.basicConfig(filename=logfile,
-                        format='%(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.WARNING)
-  else:
-    logging.basicConfig(format='%(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.WARNING)
   loglevel = warning
+  level = logging.WARNING
+  formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
+  setLogger(logfile, level, formatter)
   logging.warning('start Release %s', loglevel)
   
 def setUnitTests(logfile=None):
   global loglevel
-  if logfile:
-    logging.basicConfig(filename=logfile,
-                        format='%(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.CRITICAL)
-  else:
-    logging.basicConfig(format='%(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.CRITICAL)
   loglevel = critical
+  level = logging.CRITICAL
+  formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
+  setLogger(logfile, level, formatter)
   logging.critical('start UnitTests %s', loglevel)
   
 def setPerfTests(logfile=None):
   global loglevel
-  if logfile:
-    logging.basicConfig(filename=logfile,
-                        format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.CRITICAL)
-  else:
-    logging.basicConfig(format='%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s',
-                        level=logging.CRITICAL)    
   loglevel = critical
+  level = logging.CRITICAL
+  formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
+  setLogger(logfile, level, formatter)
   logging.info('start PerfTests %s', loglevel)
   
 def getLogLevel():
   return loglevel
-  
-  #logging.basicConfig(filename='myapp.log',
-  #                    format='%(asctime)s %(message)s',
-  #                    datefmt='%m/%d/%Y %I:%M:%S %p',
-  #                    level=logging.DEBUG)