Ticket #2844: log_format-r4543.diff
| File log_format-r4543.diff, 4.2 kB (added by cboos, 19 months ago) |
|---|
-
trac/env.py
109 109 110 110 Should be one of (`CRITICAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`).""") 111 111 112 log_format = Option('logging', 'log_format', None, 113 """Custom logging format. 114 115 If nothing is set, the following will be used: 116 117 Trac[$(module)s] $(levelname)s: $(message)s 118 119 Besides regular key names supported by the Python logger library 120 (see http://docs.python.org/lib/node422.html), one could use also: 121 - $(logid)s the path for the current environment 122 - $(basename)s the last path component of the current environment 123 - $(project)s the project name 124 125 Note the usage of `$(...)s` instead of `%(...)s` as the latter form 126 would be interpreted by the ConfigParser itself. 127 128 Example: 129 ($(thread)d) Trac[$(basename)s:$(module)s] $(levelname)s: $(message)s 130 """) 131 112 132 def __init__(self, path, create=False, options=[]): 113 133 """Initialize the Trac environment. 114 134 … … 281 301 logfile = self.log_file 282 302 if logtype == 'file' and not os.path.isabs(logfile): 283 303 logfile = os.path.join(self.get_log_dir(), logfile) 284 self.log = logger_factory(logtype, logfile, self.log_level, self.path) 304 self.log = logger_factory(logtype, logfile, self.log_level, self.path, 305 format=self.log_format, 306 project=self.project_name, 307 basename=os.path.basename(self.path)) 285 308 286 309 def get_known_users(self, cnx=None): 287 310 """Generator that yields information about all known users, i.e. users -
trac/log.py
20 20 import sys 21 21 22 22 def logger_factory(logtype='syslog', logfile=None, level='WARNING', 23 logid='Trac' ):23 logid='Trac', format=None, basename='', project=''): 24 24 logger = logging.getLogger(logid) 25 25 logtype = logtype.lower() 26 26 if logtype == 'file': 27 27 hdlr = logging.FileHandler(logfile) 28 elif logtype in ['winlog', 'eventlog', 'nteventlog']:28 elif logtype in ('winlog', 'eventlog', 'nteventlog'): 29 29 # Requires win32 extensions 30 30 hdlr = logging.handlers.NTEventLogHandler(logid, 31 31 logtype='Application') 32 elif logtype in ['syslog', 'unix']:32 elif logtype in ('syslog', 'unix'): 33 33 hdlr = logging.handlers.SysLogHandler('/dev/log') 34 elif logtype in ['stderr']:34 elif logtype in ('stderr'): 35 35 hdlr = logging.StreamHandler(sys.stderr) 36 36 else: 37 37 hdlr = logging.handlers.BufferingHandler(0) 38 38 # Note: this _really_ throws away log events, as a `MemoryHandler` 39 39 # would keep _all_ records in case there's no target handler (a bug?) 40 40 41 format = 'Trac[%(module)s] %(levelname)s: %(message)s' 42 if logtype in ['file', 'stderr']: 43 format = '%(asctime)s ' + format 41 if not format: 42 format = 'Trac[%(module)s] %(levelname)s: %(message)s' 43 if logtype in ('file', 'stderr'): 44 format = '%(asctime)s ' + format 45 else: 46 format = format.replace('$(', '%(') 47 format = format.replace('%(logid)s', logid) \ 48 .replace('%(project)s', project) \ 49 .replace('%(basename)s', basename) 44 50 datefmt = '' 45 51 if logtype == 'stderr': 46 52 datefmt = '%X' 47 53 level = level.upper() 48 if level in ['DEBUG', 'ALL']:54 if level in ('DEBUG', 'ALL'): 49 55 logger.setLevel(logging.DEBUG) 50 56 elif level == 'INFO': 51 57 logger.setLevel(logging.INFO) … … 55 61 logger.setLevel(logging.CRITICAL) 56 62 else: 57 63 logger.setLevel(logging.WARNING) 58 formatter = logging.Formatter(format, datefmt)64 formatter = logging.Formatter(format, datefmt) 59 65 hdlr.setFormatter(formatter) 60 66 logger.addHandler(hdlr) 61 67
