Changeset 410
- Timestamp:
- 07/20/10 10:44:34 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/email2trac.py.in
r409 r410 51 51 -h,--help 52 52 -f,--file <configuration file> 53 53 -n,--dry-run 54 54 -p, --project <project name> 55 55 -t, --ticket_prefix <name> 56 56 57 57 SVN Info: … … 163 163 comment = '> ' 164 164 165 def __init__(self, env, parameters, version):165 def __init__(self, env, parameters, logger, version): 166 166 self.env = env 167 167 … … 173 173 # 174 174 self.parameters = parameters 175 self.logger = logger 175 176 176 177 # Some useful mail constants … … 188 189 self.get_config = self.env.config.get 189 190 190 self.setup_log() 191 ## init function ## 192 # 191 193 self.setup_parameters() 192 194 193 194 def setup_log(self):195 """196 Setup loging197 198 Note for log format the usage of `$(...)s` instead of `%(...)s` as the latter form199 would be interpreted by the ConfigParser itself.200 201 """202 if not self.parameters.log_type:203 self.parameters.log_type = 'syslog'204 205 if self.parameters.log_type == 'file':206 if not os.path.isabs(parameters.log_file):207 self.parameters.log_file = os.path.join(self.env.path, 'log')208 self.log_handler = logging.FileHandler()209 210 elif self.parameters.log_type in ('winlog', 'eventlog', 'nteventlog'):211 # Requires win32 extensions212 self.log_handler = logging.handlers.NTEventLogHandler(logid, logtype='Application')213 214 elif self.parameters.log_type in ('syslog', 'unix'):215 self.log_handler = logging.handlers.SysLogHandler('/dev/log')216 217 elif self.parameters.log_type in ('stderr'):218 self.log_handler = logging.StreamHandler(sys.stderr)219 220 else:221 self.log_handler = logging.handlers.BufferingHandler(0)222 223 224 if self.parameters.log_format:225 self.parameters.log_format = self.parameters.log_format.replace('$(', '%(')226 else:227 self.parameters.log_format = 'Email2trac: %(message)s'228 229 self.logger = logging.getLogger('email2trac')230 231 ## Setup debug level232 #233 if not self.parameters.log_level:234 self.parameters.log_level = 'CRITICAL'235 else:236 self.parameters.log_level = self.parameters.log_level.upper()237 238 if self.parameters.log_level in ['DEBUG', 'ALL'] and self.parameters.debug > 0:239 self.logger.setLevel(logging.DEBUG)240 241 elif self.parameters.log_level in ['INFO'] or self.parameters.verbose:242 self.logger.setLevel(logging.INFO)243 244 elif self.parameters.log_level in ['WARNING']:245 self.logger.setLevel(logging.WARNING)246 247 elif self.parameters.log_level in ['ERROR']:248 self.logger.setLevel(logging.ERROR)249 250 elif self.parameters.log_level in ['CRITICAL']:251 self.logger.setLevel(logging.CRITICAL)252 253 else:254 self.logger.setLevel(logging.ERROR)255 256 self.log_formatter = logging.Formatter(self.parameters.log_format)257 self.log_handler.setFormatter(self.log_formatter)258 259 self.logger.addHandler(self.log_handler)260 261 262 195 def setup_parameters(self): 263 196 if self.parameters.has_key('umask'): 264 197 os.umask(int(self.parameters['umask'], 8)) 265 198 266 if self.parameters.debug:267 self.parameters.debug = int(self.parameters.debug)268 else:269 self.parameters.debug = 0270 199 271 200 if self.parameters.has_key('mailto_link'): … … 1063 992 - trac default values, trac.ini 1064 993 """ 994 self.logger.debug('function set_ticket_fields') 995 1065 996 user_dict = dict() 1066 997 … … 2179 2110 2180 2111 except Exception, e: 2181 print 'TD: Failure sending notification on creation of ticket #%s: %s' %(self.id, e)2112 set.logger.error('Failure sending notification on creation of ticket #%s: %s' %(self.id, e)) 2182 2113 2183 2114 … … 2217 2148 project[option] = value 2218 2149 2150 ## Convert debug value to int 2151 # 2152 if project.debug: 2153 project.debug = int(project.debug) 2154 else: 2155 project.debug = 0 2156 2219 2157 return project 2158 2159 ########## Setup Logging ############################################################### 2160 2161 def setup_log(parameters): 2162 """ 2163 Setup loging 2164 2165 Note for log format the usage of `$(...)s` instead of `%(...)s` as the latter form 2166 would be interpreted by the ConfigParser itself. 2167 2168 """ 2169 logger = logging.getLogger('email2trac') 2170 2171 if not parameters.log_type: 2172 parameters.log_type = 'syslog' 2173 2174 if parameters.log_type == 'file': 2175 if not os.path.isabs(parameters.log_file): 2176 parameters.log_file = os.path.join('log') 2177 log_handler = logging.FileHandler() 2178 2179 elif parameters.log_type in ('winlog', 'eventlog', 'nteventlog'): 2180 # Requires win32 extensions 2181 log_handler = logging.handlers.NTEventLogHandler(logid, logtype='Application') 2182 2183 elif parameters.log_type in ('syslog', 'unix'): 2184 log_handler = logging.handlers.SysLogHandler('/dev/log') 2185 2186 elif parameters.log_type in ('stderr'): 2187 log_handler = logging.StreamHandler(sys.stderr) 2188 2189 else: 2190 log_handler = logging.handlers.BufferingHandler(0) 2191 2192 if parameters.log_format: 2193 parameters.log_format = parameters.log_format.replace('$(', '%(') 2194 else: 2195 parameters.log_format = 'Email2trac: %(message)s' 2196 2197 log_formatter = logging.Formatter(parameters.log_format) 2198 log_handler.setFormatter(log_formatter) 2199 logger.addHandler(log_handler) 2200 2201 if (parameters.log_level in ['DEBUG', 'ALL']) or (parameters.debug > 0): 2202 logger.setLevel(logging.DEBUG) 2203 2204 elif parameters.log_level in ['INFO'] or parameters.verbose: 2205 logger.setLevel(logging.INFO) 2206 2207 elif parameters.log_level in ['WARNING']: 2208 logger.setLevel(logging.WARNING) 2209 2210 elif parameters.log_level in ['ERROR']: 2211 logger.setLevel(logging.ERROR) 2212 2213 elif parameters.log_level in ['CRITICAL']: 2214 logger.setLevel(logging.CRITICAL) 2215 2216 else: 2217 logger.setLevel(logging.INFO) 2218 2219 return logger 2220 2220 2221 2221 … … 2261 2261 2262 2262 settings = ReadConfig(configfile, project_name) 2263 2264 # The default prefix for ticket values in email2trac.conf 2265 # 2266 settings['ticket_prefix'] = ticket_prefix 2267 settings['dry_run'] = dry_run 2268 settings['verbose'] = verbose 2269 2270 logger = setup_log(settings) 2271 2263 2272 if not settings.has_key('project'): 2264 2273 print __doc__ … … 2269 2278 settings['component'] = component 2270 2279 2271 # The default prefix for ticket values in email2trac.conf2272 #2273 settings['ticket_prefix'] = ticket_prefix2274 settings['dry_run'] = dry_run2275 settings['verbose'] = verbose2276 2277 2278 2280 # Determine major trac version used to be in email2trac.conf 2279 2281 # Quick hack for 0.12 … … 2283 2285 version = '0.12' 2284 2286 2285 if verbose: 2286 print "Found trac version: %s" %(version) 2287 logger.debug("Found trac version: %s" %(version)) 2287 2288 2288 2289 #debug HvB … … 2338 2339 2339 2340 else: 2340 print 'TRAC version %s is not supported' %version2341 logger.error('TRAC version %s is not supported' %version) 2341 2342 sys.exit(1) 2342 2343 … … 2353 2354 2354 2355 2355 if int(settings['debug'])> 0:2356 print 'Loading environment', settings['project']2356 if settings.debug > 0: 2357 logger.debug('Loading environment %s', settings.project) 2357 2358 2358 2359 env = Environment(settings['project'], create=0) 2359 2360 2360 tktparser = TicketEmailParser(env, settings, float(version))2361 tktparser = TicketEmailParser(env, settings, logger, float(version)) 2361 2362 tktparser.parse(sys.stdin) 2362 2363 … … 2379 2380 tktparser.save_email_for_debug(m, True) 2380 2381 2381 2382 2382 sys.exit(1) 2383 2383 # EOB
Note: See TracChangeset
for help on using the changeset viewer.