我想使用dictConfig,但文档有点抽象.我在哪里可以找到使用的字典的具体,复制+粘贴示例dictConfig?
我正在使用Logging(import logging)来记录消息.
在1个单独的模块中,我在调试级别记录消息my_logger.debug('msg');
其中一些调试消息来自function_a()和其他来自function_b(); 我希望能够根据它们来自a还是来自b来启用/禁用日志记录;
我猜我必须使用Logging的过滤机制.
有人可以告诉我下面的代码是如何需要检测来做我想要的吗?
import logging
logger= logging.getLogger( "module_name" )
def function_a( ... ):
logger.debug( "a message" )
def function_b( ... ):
logger.debug( "another message" )
if __name__ == "__main__":
logging.basicConfig( stream=sys.stderr, level=logging.DEBUG )
#don't want function_a()'s noise -> ....
#somehow filter-out function_a's logging
function_a()
#don't want function_b()'s noise -> ....
#somehow filter-out function_b's logging
function_b()
Run Code Online (Sandbox Code Playgroud)
如果我将这个简单的例子扩展到每个模块的更多模块和更多的函数,我会关注很多记录器;
我可以将每个模块保持在1个记录器吗?请注意,日志消息是"结构化的",即如果记录它的函数正在进行一些解析工作,它们都包含一个前缀logger.debug("parsing: xxx")- 我能以某种方式用一行来关闭所有"解析"消息(无论发出消息的模块/功能?)
在 Flask 应用程序中,我使用 aRotatingFileLogger将 werkzeug 访问日志记录到文件中,如本问题所示:
file_handler_access_log = RotatingFileHandler("access.log",
backupCount=5,
encoding='utf-8')
formatter = logging.Formatter('%(asctime)s %(module)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
file_handler_access_log.setFormatter(formatter)
werkzeug_logger.addHandler(file_handler_access_log)
werkzeug_logger.setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)
在该access.log文件中,请求如下所示:
2020-10-07 09:43:51 _internal INFO: 127.0.0.1 - - [07/Oct/2020 09:43:51] "[37mGET /api/foo HTTP/1.1[0m" 200 -
Run Code Online (Sandbox Code Playgroud)
我想摆脱[37m日志文件中的颜色代码。
werkzeug文档指出:
开发服务器可以根据状态代码选择以不同颜色突出显示请求日志。安装 单击以启用此功能。
Click 是 Flask 依赖项,所以我无法卸载它。如何禁用彩色日志记录?