import sys
+from zope.interface import implementer
+
import twisted
from twisted.internet import reactor
import twisted.internet.endpoints
_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])
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]
#[<client>] overrides
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 ]
)