1 import logging, logging.handlers
2 import logging.config
3 import os,sys
4 import iceprod
5 from os.path import expandvars
6
7 setlevel = {
8 'CRITICAL': logging.CRITICAL,
9 'ERROR': logging.ERROR,
10 'WARNING': logging.WARNING,
11 'INFO': logging.INFO,
12 'DEBUG': logging.DEBUG
13 }
14
15 host = os.uname()[1].split(".")[0]
16
18 - def __init__(self, host, port,site='?'):
19 self.site = site
20 logging.handlers.DatagramHandler.__init__(self, host, port)
21
22 - def emit(self, record):
23 if not record.name.startswith(self.site):
24 record.name = self.site +':'+ record.name
25 logging.handlers.DatagramHandler.emit(self,record)
26
28
29 if not cfg:
30 cfg = iceprod.getconfig('iceprodd.py')
31
32 logformat='%(asctime)s %(levelname)s %(name)s : %(message)s'
33 if cfg.has_option('logging','format'):
34 logformat=cfg.get('logging','format',raw=True)
35
36 loglevel = expandvars(cfg.get('logging','level'))
37 if cfg.has_option('logging',loggername):
38 logfile = expandvars(cfg.get('logging',loggername))
39 else:
40 logfile = expandvars(cfg.get('logging','logfile'))
41
42 rootLogger = logging.getLogger('')
43 rootLogger.setLevel(setlevel[loglevel])
44
45 if not logfile.strip() == 'sys.stdout':
46 if not logfile.startswith('/'):
47 logfile = expandvars(os.path.join(cfg.get('path','basedir'),logfile))
48 if not os.path.exists(os.path.dirname(logfile)):
49 os.makedirs(os.path.dirname(logfile))
50 fileHandler = logging.handlers.RotatingFileHandler(logfile,'a',1048576,4)
51 formatter = logging.Formatter(logformat)
52 fileHandler.setFormatter(formatter)
53 rootLogger.addHandler(fileHandler)
54 else:
55 logging.basicConfig()
56
57 if cfg.getboolean('logging','rmtlog') and loglevel not in ('DEBUG','TRACE'):
58
59 loghost,logport=cfg.get('logging','server').split(':')
60 udpHandler = IceProdDgramHandler(loghost, int(logport),site=cfg.get('queue','name'))
61 memoryHandler = logging.handlers.MemoryHandler(24, target=udpHandler)
62 rootLogger.addHandler(memoryHandler)
63