Package PyFoam :: Package Infrastructure :: Module Logging
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.Infrastructure.Logging

 1  #  ICE Revision: $Id$ 
 2  """Writes Logfiles""" 
 3   
 4  from PyFoam.ThirdParty.six import print_ 
 5   
 6  try: 
 7      import logging 
 8      hasLogging=True 
 9  except ImportError: 
10      # For Python-versions < 2.3 
11      print_("Warning: old python-version. No logging-support") 
12      hasLogging=False 
13   
14  from PyFoam.Infrastructure.Hardcoded import assertDirectory,logDirectory 
15  from os import path 
16  from platform import uname 
17   
18  from PyFoam import configuration as config 
19   
20  _definedLoggers=[] 
21   
22 -def _getLoggingLevel(name):
23 """Gets the logging level value from its name""" 24 level=config().get("Logging","default") 25 26 try: 27 level=config().get("Logging",name) 28 except: 29 pass 30 31 value=logging.INFO 32 try: 33 value=getattr(logging,level) 34 except AttributeError: 35 print_("WARNING: Wrong specification of debug level "+level+" for log "+name) 36 37 return value
38
39 -class DummyLogger:
40 - def __init__(self):
41 pass
42
43 - def info(self,arg):
44 pass
45
46 -def foamLogger(name="general"):
47 """ 48 @param name: name of the logfile 49 @return: a logger that is correctly set up for pyFoam 50 """ 51 52 if not hasLogging: 53 return DummyLogger() 54 55 log=logging.getLogger(name) 56 if not (name in _definedLoggers): 57 assertDirectory(logDirectory()) 58 lname=path.join(logDirectory(),name) 59 # rot=logging.TimedRotatingFileHandler(lname,when="M",interval=2,backupCount=5) 60 rot=logging.FileHandler(lname) 61 machine=uname()[1].split(".")[0] 62 rot.setFormatter(logging.Formatter(fmt="%(asctime)s "+("%15s" % machine)+":%(process)-6d %(levelname)-8s %(message)s - in %(filename)s:%(lineno)d")) 63 log.addHandler(rot) 64 log.setLevel(_getLoggingLevel(name)) 65 _definedLoggers.append(name) 66 67 return log
68 69 # Should work with Python3 and Python2 70