Salome HOME
blocFissure : debug logging implementation
[modules/smesh.git] / src / Tools / blocFissure / gmu / initLog.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 import os
5
6 debug = 10
7 info = 20
8 warning = 30
9 error = 40
10 critical = 50
11
12 loglevel = warning
13 logging.basicConfig(format='%(funcName)s[%(lineno)d] %(message)s',
14                     level=logging.WARNING)
15 ch = None
16 fh = None
17
18 def setLogger(logfile, level, formatter):
19   global ch, fh
20   rootLogger = logging.getLogger('')
21   if fh is not None:
22     rootLogger.removeHandler(fh)
23     fh = None
24   if ch is not None:
25     rootLogger.removeHandler(ch)
26     ch = None
27   if logfile:
28     if os.path.exists(logfile):
29       os.remove(logfile)
30     fh = logging.FileHandler(logfile)
31     rootLogger.addHandler(fh)
32     fh.setFormatter(formatter)
33   else:
34     ch = logging.StreamHandler()
35     rootLogger.addHandler(ch)
36     ch.setFormatter(formatter)
37   rootLogger.setLevel(level)
38   
39   
40 def setDebug(logfile=None):
41   global loglevel
42   loglevel = debug
43   level = logging.DEBUG
44   formatter = logging.Formatter('%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s')
45   setLogger(logfile, level, formatter)
46   logging.info('start Debug %s', loglevel)
47
48 def setVerbose(logfile=None):
49   global loglevel
50   loglevel = info
51   level = logging.INFO
52   formatter = logging.Formatter('%(relativeCreated)d %(funcName)s[%(lineno)d] %(message)s')
53   setLogger(logfile, level, formatter)
54   logging.info('start Verbose %s', loglevel)
55
56 def setRelease(logfile=None):
57   global loglevel
58   loglevel = warning
59   level = logging.WARNING
60   formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
61   setLogger(logfile, level, formatter)
62   logging.warning('start Release %s', loglevel)
63   
64 def setUnitTests(logfile=None):
65   global loglevel
66   loglevel = critical
67   level = logging.CRITICAL
68   formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
69   setLogger(logfile, level, formatter)
70   logging.critical('start UnitTests %s', loglevel)
71   
72 def setPerfTests(logfile=None):
73   global loglevel
74   loglevel = critical
75   level = logging.CRITICAL
76   formatter = logging.Formatter('%(funcName)s[%(lineno)d] %(message)s')
77   setLogger(logfile, level, formatter)
78   logging.info('start PerfTests %s', loglevel)
79   
80 def getLogLevel():
81   return loglevel