Django使用python内建的logging模块打印日志,python的logging配置由下面的四个方面组成: 记录器: Logger 处理程序: Handler 过滤器: Filter 格式化: Formatter 记录器 Logger Logger 为日志系统的入口。每个logger命名都是bucket,你可以向这个bucket写入需要处理的消息。 每个logger 都有一个日志级别。日志级别表示该logger 将要处理的消息的严重性。Python 定义以下几种日志级别: DEBUG:用于调试目的的底层系统信息 INFO:普通的系统信息 WARNING:表示出现一个较小的问题。 ERROR:表示出现一个较大的问题。 CRITICAL:表示出现一个致命的问题。 写入logger 的每条消息都是一条日志。每条日志也具有一个日志级别,它表示对应的消息的严重性。 每个日志记录还可以包含描述正在打印的事件的元信息。 当一条消息传递给logger 时,消息的日志级别将与logger 的日志级别进行比较。 如果消息的日志级别大于等于logger 的日志级别,该消息将会往下继续处理。如果小于,该消息将被忽略。 Logger 一旦决定消息需要处理,它将传递该消息给一个Handler。 Logger日志级别 级别 值 描述 CRITICAL 50 关键错误/消息 ERROR 40 错误 WARNING 30 警告消息 INFO 20 通知消息 DEBUG 10 调式 NOTSET 0 无级别 Logger的配置 logger 对应的值是个字典,其每一个键都是logger的名字,每一个值又是个字典,描述了如何配置对应的Logger实例。 level (可选的)。logger的级别。 propagate (可选的)。logger的传播设置。 filters (可选的)。logger的filter的标识符的列表。 handlers (可选的)。logger的handler的标识符的列表。 在settings.py中配置日志 LOGGING = { ‘loggers‘: { ‘devops‘: { ‘handlers‘: [‘file_handler‘, ‘console_handler‘], ‘level‘: ‘DEBUG‘, }, }, } 想要了解更多logger,详情请参考:https://yiyibooks.cn/xx/python_352/library/logging.html#logger-objects 处理程序 Handler Handler 决定如何处理logger 中的每条消息。它表示一个特定的日志行为,例如将消息写到屏幕上、写到文件中或者写到网络socket 与logger 一样,handler 也有一个日志级别。如果消息的日志级别小于handler 的级别,handler 将忽略该消息 Logger 可以有多个handler,而每个handler 可以有不同的日志级别。利用这种方式,可以根据消息的重要性提供不同形式的处理 Handler示例 LOGGING = { ‘handlers‘:{ ‘devops‘:{ ‘level‘:‘DEBUG‘, ‘class‘:‘logging.StreamHandler‘, ‘formatter‘:‘simple‘, } } } 想要了解更多handler,详情请参考:https://yiyibooks.cn/xx/python_352/library/logging.html#handler-objects 想要了解更多loggin-handler,详情请参考:https://yiyibooks.cn/xx/python_352/library/logging.handlers.html Filters 过滤器 Filter 用于对从logger 传递给handler 的日志记录进行额外的控制。 默认情况下,满足日志级别的任何消息都将被处理。通过安装一个filter,你可以对日志处理添加额外的条件。 例如,你可以安装一个filter,只允许处理来自特定源的ERROR 消息 Filters 还可以用于修改将要处理的日志记录的优先级。 例如,如果日志记录满足特定的条件,你可以编写一个filter 将日志记录从ERROR 降为WARNING Filters 可以安装在logger 上或者handler 上;多个filter 可以串联起来实现多层filter 行为 格式化(Formatters) 日志记录需要转换成文本。Formatter表示文本的格式。Fomatter通常由包含日志记录属性的Python格式字符串组成;你也可以编写自定义的fomatter来实现自己的格式。 LOGGING = { ‘formatters‘: { ‘devops‘:{ ‘format‘: ‘%(asctime)s - %(pathname)s:%(lineno)d[%(levelname)s] - %(message)s‘ } ‘simple‘: { ‘format‘: ‘%(asctime)s %(levelname)s %(message)s‘ }, }, } Format日志消息格式 描述 %(name)s 记录器的名称 %(levelno)s 数字形式的日志记录级别 %(levelname)s 日志记录级别的文本名称 %(filename)s 执行日志记录调用的源文件的文件名称 %(pathname)s 执行日志记录调用的源文件的路径名称 %(funcName)s 执行日志记录调用的函数名称 %(module)s 执行日志记录调用的模块名称 %(lineno)s 执行日志记录调用的行号 %(created)s 执行日志记录的时间 %(asctime)s 日期和时间 %(msecs)s 毫秒部分 %(thread)s 线程ID %(threadName)s 线程名称 %(process)s 进程ID %(message)s 记录的消息 更多formatters,详情请参考:https://yiyibooks.cn/xx/python_352/library/logging.html#formatter-objects
原文:https://www.cnblogs.com/l10n/p/14278432.html