X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=hippotat%2F__init__.py;h=0b827c9df10a3506e5c4746eaf5d1068f8874fbd;hb=b83d422a15ee072d89643a85832400cb09e353ac;hp=e13b31f642429f443da389eb7095e350155d0baa;hpb=380ed56c213ae7a2aa192904c7c031626fad57c2;p=hippotat.git diff --git a/hippotat/__init__.py b/hippotat/__init__.py index e13b31f..0b827c9 100644 --- a/hippotat/__init__.py +++ b/hippotat/__init__.py @@ -5,6 +5,8 @@ signal.signal(signal.SIGINT, signal.SIG_DFL) import sys +from zope.interface import implementer + import twisted from twisted.internet import reactor import twisted.internet.endpoints @@ -47,10 +49,16 @@ class DBG(twisted.python.constants.Names): _hex_codec = codecs.getencoder('hex_codec') +#---------- logging ---------- + +org_stderr = sys.stderr + log = twisted.logger.Logger() +debug_set = set([x for x in DBG.iterconstants() if x <= DBG.HTTP]) + def log_debug(dflag, msg, idof=None, d=None): - if dflag > DBG.HTTP: return + if dflag not in debug_set: return #print('---------------->',repr((dflag, msg, idof, d)), file=sys.stderr) if idof is not None: msg = '[%#x] %s' % (id(idof), msg) @@ -60,6 +68,25 @@ def log_debug(dflag, msg, idof=None, d=None): msg += ' ' + d log.info('{dflag} {msgcore}', dflag=dflag, msgcore=msg) +@implementer(twisted.logger.ILogFilterPredicate) +class LogNotBoringTwisted: + def __call__(self, event): + yes = twisted.logger.PredicateResult.yes + no = twisted.logger.PredicateResult.no + try: + if event.get('log_level') != LogLevel.info: + return yes + try: + dflag = event.get('dflag') + except KeyError: + dflag = DBG.TWISTED + return yes if (dflag in debug_set) else no + except Exception: + print(traceback.format_exc(), file=org_stderr) + return yes + +#---------- default config ---------- + defcfg = ''' [DEFAULT] #[] overrides @@ -374,9 +401,13 @@ def common_startup(): stdout_obs = twisted.logger.FileLogObserver(sys.stdout, log_formatter) stderr_obs = twisted.logger.FileLogObserver(sys.stderr, log_formatter) pred = twisted.logger.LogLevelFilterPredicate(LogLevel.error) - log_observer = twisted.logger.FilteringLogObserver( + stdsomething_obs = twisted.logger.FilteringLogObserver( stderr_obs, [pred], stdout_obs ) + log_observer = twisted.logger.FilteringLogObserver( + stdsomething_obs, [LogNotBoringTwisted()] + ) + #log_observer = stdsomething_obs twisted.logger.globalLogBeginner.beginLoggingTo( [ log_observer, crash_on_critical ] )