Changeset 410


Ignore:
Timestamp:
07/20/10 10:44:34 (12 years ago)
Author:
bas
Message:

Moved logging out class TicketParser? so we can use outside this class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/email2trac.py.in

    r409 r410  
    5151                -h,--help
    5252                -f,--file  <configuration file>
    53                 -n,--dry-run
     53                -n,--dry-run
    5454                -p, --project <project name>
    55                 -t, --ticket_prefix <name>
     55                -t, --ticket_prefix <name>
    5656
    5757SVN Info:
     
    163163        comment = '> '
    164164
    165         def __init__(self, env, parameters, version):
     165        def __init__(self, env, parameters, logger, version):
    166166                self.env = env
    167167
     
    173173                #
    174174                self.parameters = parameters
     175                self.logger = logger
    175176
    176177                # Some useful mail constants
     
    188189                self.get_config = self.env.config.get
    189190
    190                 self.setup_log()
     191                ## init function ##
     192                #
    191193                self.setup_parameters()
    192194
    193 
    194         def setup_log(self):
    195                 """
    196                 Setup loging
    197 
    198                 Note for log format the usage of `$(...)s` instead of `%(...)s` as the latter form
    199         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 extensions
    212                         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 level
    232                 #
    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                
    262195        def setup_parameters(self):
    263196                if self.parameters.has_key('umask'):
    264197                        os.umask(int(self.parameters['umask'], 8))
    265198
    266                 if self.parameters.debug:
    267                         self.parameters.debug = int(self.parameters.debug)
    268                 else:
    269                         self.parameters.debug = 0
    270199
    271200                if self.parameters.has_key('mailto_link'):
     
    1063992                        - trac default values, trac.ini
    1064993                """
     994                self.logger.debug('function set_ticket_fields')
     995
    1065996                user_dict = dict()
    1066997
     
    21792110
    21802111                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))
    21822113
    21832114
     
    22172148                        project[option] = value
    22182149
     2150        ## Convert debug value to int
     2151        #
     2152        if project.debug:
     2153                project.debug = int(project.debug)
     2154        else:
     2155                project.debug = 0
     2156
    22192157        return project
     2158
     2159########## Setup Logging ###############################################################
     2160
     2161def 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
    22202220
    22212221
     
    22612261       
    22622262        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
    22632272        if not settings.has_key('project'):
    22642273                print __doc__
     
    22692278                settings['component'] = component
    22702279
    2271         # The default prefix for ticket values in email2trac.conf
    2272         #
    2273         settings['ticket_prefix'] = ticket_prefix
    2274         settings['dry_run'] = dry_run
    2275         settings['verbose'] = verbose
    2276 
    2277 
    22782280        # Determine major trac version used to be in email2trac.conf
    22792281        # Quick hack for 0.12
     
    22832285                version = '0.12'
    22842286
    2285         if verbose:
    2286                 print "Found trac version: %s" %(version)
     2287        logger.debug("Found trac version: %s" %(version))
    22872288       
    22882289        #debug HvB
     
    23382339
    23392340                else:
    2340                         print 'TRAC version %s is not supported' %version
     2341                        logger.error('TRAC version %s is not supported' %version)
    23412342                        sys.exit(1)
    23422343                       
     
    23532354
    23542355       
    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)
    23572358
    23582359                env = Environment(settings['project'], create=0)
    23592360
    2360                 tktparser = TicketEmailParser(env, settings, float(version))
     2361                tktparser = TicketEmailParser(env, settings, logger, float(version))
    23612362                tktparser.parse(sys.stdin)
    23622363
     
    23792380                        tktparser.save_email_for_debug(m, True)
    23802381
    2381 
    23822382                sys.exit(1)
    23832383# EOB
Note: See TracChangeset for help on using the changeset viewer.