1+ import logging
2+
13from common import time_stamp , field_cache , ProxyBuilder
24
5+ jm_logger = logging .getLogger ('jmcomic' )
6+
37
48def shuffled (lines ):
59 from random import shuffle
@@ -9,9 +13,27 @@ def shuffled(lines):
913 return ls
1014
1115
12- def default_jm_logging (topic : str , msg : str ):
13- from common import format_ts , current_thread
14- print ('[{}] [{}]:【{}】{}' .format (format_ts (), current_thread ().name , topic , msg ))
16+ def setup_default_jm_logger ():
17+ # 为了保持原有默认向下兼容,如果没有 handler,我们加一个控制台 handler
18+ if not jm_logger .handlers :
19+ import sys
20+ handler = logging .StreamHandler (sys .stdout )
21+ formatter = logging .Formatter ('[%(asctime)s] [%(threadName)s]:【%(topic)s】%(message)s' , datefmt = '%Y-%m-%d %H:%M:%S' )
22+ handler .setFormatter (formatter )
23+ jm_logger .addHandler (handler )
24+ jm_logger .setLevel (logging .INFO )
25+
26+
27+ def default_jm_logging (topic : str , msg , e : Exception = None ):
28+ # 支持 jm_log('topic', e) 的简写
29+ if isinstance (msg , BaseException ):
30+ e = msg
31+ msg = str (msg )
32+ extra = {'topic' : topic }
33+ if e is not None :
34+ jm_logger .error (msg , extra = extra , exc_info = e )
35+ else :
36+ jm_logger .info (msg , extra = extra )
1537
1638
1739# 禁漫常量
@@ -382,11 +404,10 @@ def get_fix_ts_token_tokenparam(cls):
382404 token , tokenparam = JmCryptoTool .token_and_tokenparam (ts )
383405 return ts , token , tokenparam
384406
385- # noinspection PyUnusedLocal
386407 @classmethod
387- def jm_log (cls , topic : str , msg : str ):
408+ def jm_log (cls , topic : str , msg : str , e : Exception = None ):
388409 if cls .FLAG_ENABLE_JM_LOG is True :
389- cls .EXECUTOR_LOG (topic , msg )
410+ cls .EXECUTOR_LOG (topic , msg , e )
390411
391412 @classmethod
392413 def disable_jm_log (cls ):
@@ -507,5 +528,7 @@ def register_exception_listener(cls, etype, listener):
507528 cls .REGISTRY_EXCEPTION_LISTENER [etype ] = listener
508529
509530
531+ setup_default_jm_logger ()
532+
510533jm_log = JmModuleConfig .jm_log
511534disable_jm_log = JmModuleConfig .disable_jm_log
0 commit comments