Python-日志模块

目录

一、日志级别

二、日志配置

1、日志基本配置

2、日志配置字典(知道咋么改就可以)

3、日志的使用


一、日志级别

import logginglogging.debug('调试日志')
logging.info('消息日志')
logging.warning('警告日志')
logging.error('错误日志')
logging.critical('严重错误日志')

注:info 级别一下的日志不用输出,只打印Warning级别以上的日志(可以更改);

二、日志配置

1、日志基本配置

# 日志基本配置
logging.basicConfig(  # 默认编码方式gbk# 1、日志级别level=30,  # 用来控制输出级别,30对应的是warning# DEBUG:10# INFO:20# WARNING:30# ERROR:40# CRITICAL:50# 2、日志输出格式format='%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s',# %(asctime)s 获取当前时间,# % (name)s 当前日志的名字# %(pathname)s 指的是哪一个文件产生的日志# %(lineno)d 指的是文件的哪一行代码产生的日志# %(levelname)s 指的是文本形式的日志等级# 3、asctime的时间格式datefmt='%Y %m %d %H:%M:%S',# 4、日志输出位置:终端/文件filename='user.log', # 不指定此配置,默认打印到终端
)

'''
%(name)s Logger的名字(getlogger时指定的名字)
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出日志的完整路径名
%(filename)s 调用日志输出日志的文件名
%(module)s 调用日志输出日志的模块名
%(funcName)s 调用日志输出日志的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间,默认格式是 “2022 07 30 22:15:53,394”
%(thread)d 线程ID,可能没有
%(threadName)s 线程名,可能没有
%(process)d 进程ID,可能没有
%(message)s 用户输出的消息
'''
'''
logging模块有三个比较重要的功能组件:
1、loggers 配置文件可定义一些输出日志的appname
2、handler 配置日志的分隔大小,输出位置,日志文件创建等
3、formatters 配置日志输出的格式
'''

2、日志配置字典(知道咋么改就可以)

(1)需要将字典放在项目的settings.py里面;(图片中Ctrl+Shift +-号缩放)

(2)解读

LOGGING_DIC = {'version': 1.0,  # 版本,根据个人修改'disable existing loggers': False,# 日志格式,格斯根据需求,自己更改或者命名'formatters': {'standard': {'format': '%(asctime)s %(threadName)s:%(thread)d [%(name)s] %(levelname)s [%(pathname)s:%(lineno)d] %(message)s','datefmt': '%Y %m %d %H:%M:%S',},'simple': {'format': '%(asctime)s [%(name)s] %(levelname)s %(message)s', 'datefmt': '%Y %m %d %H:%M:%S',},'test': {'format': '%(asctime)s %(message)s',},},'filters': {},  # 过滤器# 日志处理器'handlers': {'console WARNING handler': {'level': 'WARNING',  # 日志处理的级别限制'class': 'logging.StreamHandler',  # 输出到终端'formatter': 'simple'  # 日志格式},'file info handler': {'level': 'INFO','class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,日志轮转'filename': 'user.log','maxBytes': 1024 * 1024 * 10,  # 日志大小 10M'backupCount': 10, # 日志文件保存数量限制'encoding': 'utf 8','formatter': 'standard',},  # 保存到文件'file debug handler': {'level': 'DEBUG','class': 'logging.FileHandler',  # 保存到文件'filename': 'test.log',  # 日志存放的路径'encoding': 'utf 8',  # 日志文件的编码'formatter': 'test',},'file info_standard handler': {'level': 'INFO',  # 日志处理的级别限制'class': 'logging.handlers.RotatingFileHandler','filename': 'zx.log','maxBytes': 1024 * 1024 * 10,  # 日志大小 10M'backupCount': 10, # 日志文件保存数量限制'encoding': 'utf 8','formatter': 'standard'  # 日志格式},'': {'level': 'INFO',  # 日志处理的级别限制'class': 'logging.handlers.RotatingFileHandler','filename': 'zx.log','maxBytes': 1024 * 1024 * 10,  # 日志大小 10M'backupCount': 10, # 日志文件保存数量限制'encoding': 'utf 8','formatter': 'standard'  # 日志格式}, # 在主文件中调用setting中没有配置的handler,就会调用没有名字的},# 日志记录器'loggers': {'logger1': {  # 导入时logging.getLogger时使用的app name'handlers': ['console WARNING handler'],  # 日志分配到哪个handlers中'level': 'DEBUG',  # 日志记录的级别限制'propagate': False,# 默认为True,向上(更高级别的logger)传递,设置为False即可,否则会一份日志向上层层传递},'logger2': {'handlers': ['console WARNING handler', 'file debug handler'],'level': 'INFO','propagate': False,},'logger3': {'handlers': ['file info_standard handler', 'file debug handler'],'level': 'INFO','propagate': False,},}
}
# 注:进行日志轮转的日志文件,不能和其他handler共用,不然会导致文件被占用无法更名而报错!
# logger 负责产生不同级别的日志,然后将日志传给handler,handler将logger产生的日志进行处理

3、日志的使用

import settings
import logging.config  # 可以导入logginglogging.config.dictConfig(settings.LOGGING_DIC) # 将配置字典加载进来# logger1 = logging.getLogger('logger1')
# logger1.info('xxx登录了')
logger2 = logging.getLogger('logger2')
logger2.warning('xxx充值了5毛钱')

(1)可以根据 日志记录器Logger 和 日志处理器Handler 的level参数对日志进行分类;

比如:

   

(2)没有名字的'handler',运用在主文件中调用setting中没有配置的handler,就会调用没有名字的;

例:

'': {'level': 'INFO',  # 日志处理的级别限制'class': 'logging.handlers.RotatingFileHandler','filename': 'zx.log','maxBytes': 1024 * 1024 * 10,  # 日志大小 10M'backupCount': 10, # 日志文件保存数量限制'encoding': 'utf 8','formatter': 'standard'  # 日志格式
}, 

(3)日志的轮转,就是日志的大小超过一定大小,就重新命名;

'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,日志轮转
'filename': 'user.log',
'maxBytes': 1024 * 1024 * 10,  # 日志大小 10M
'backupCount': 10,  # 日志文件保存数量限制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java自增自减运算符

Java中的自增自减运算符分为两种: 自增运算符“ ”,作用是执行加法运算的变量值1 自减运算符“ -- ”,作用是执行加法运算的变量值-1 注意事项: “ ”和“ -- ”既可以放在变量的前面,也可以放在变量的后面。 自增自…

Linux驱动开发笔记(十三)Sysfs文件系统

文章目录 前言一、Sysfs1.1 Sysfs的引入1.2 Sysfs的目录结构1.2 Sysfs的目录详解1.2.1 devices1.2.2 bus1.2.3 class1.2.4 devices、bus、class目录之间的关系1.2.5 其他子目录 二、Sysfs使用2.1 核心数据结构2.2 相关函数2.2.1 kobject_create_and_add2.2.2 kobject_put()2.2.…

大模型自然语言生成自动驾驶可编辑仿真场景(其一 共十篇)

第一篇:LLM greater scene summarize 第二篇:LLM simulation Test effect 第三篇:LLM simulation driving scenario flow work 第四篇:LLM Algorithm flow description 第五篇:Configure the environment and back…

每天一个项目管理概念之PDCA

在项目管理中,PDCA(计划-执行-检查-行动)循环是一种广泛采用的质量管理工具,它帮助组织确保项目能够高效、有序地进行,并持续优化流程。本文将深入探讨PDCA循环的四个阶段,以及如何将其应用于项目管理中&am…

一键转换PDL至HTML,轻松驾驭文档格式,高效办公新纪元从此开启!

在信息爆炸的时代,文档格式繁多,如何高效处理这些文档成为了每个职场人士关注的焦点。现在,我们为您带来一款革命性的工具——一键转换PDL至HTML,让您轻松驾驭文档格式,开启高效办公新纪元! 首先&#xff0…

八-工具包3-pandas数据清洗及相关性

数据清洗概述 数据清洗是对一些没有用的、不合理的数据进行处理的过程。 很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。 样本数据: from io import StringIO import pandas as pdcsv_d…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-14模型构造

14模型构造 import torch from torch import nn from torch.nn import functional as F#通过实例化nn.Sequential来构建我们的模型, 层的执行顺序是作为参数传递的 net1 nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256,10)) """ nn.…

不同@Transactional方法调用同一个synchronized方法引发的生成重复序号问题

背景: Transactional( propagation Propagation.REQUIRED ) 方法 A内调用synchronized方法 这种默认传播方式使得子函数也加入当前事务, synchronized方法结束之后, Transactional 方法A 执行结束之前, synchronized方法对数据库表所作变…

Electron快速入门(三):在(二)的基础上修改了一个文件夹做了个备忘录

Lingering Memories 诗绪萦怀 修改index.html <!--index.html--> <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --><meta http…

opencv-python(十一)

图像加法 import numpy as np import cv2 img cv2.imread(jk.jpg) res cv2.add(img, img) cv2.imshow(Mypicture1,img) cv2.imshow(MyPicture2,res)cv2.waitKey(0) cv2.destroyAllWindows() res cv2.add(src1, src2, dstNone, maskNone, dtypeNone) src1&#xff1a;第一幅…

Android RecyclerView卡顿

Android RecyclerView卡顿的原因可能包括以下几点&#xff1a; 数据加载和渲染耗时&#xff1a; 当列表项较多或者数据量庞大时&#xff0c;如果在主线程中进行数据加载和布局渲染&#xff0c;会导致主线程阻塞&#xff0c;从而造成滑动卡顿。例如&#xff0c;在滚动过程中需要…

作为一名程序员,怎么才能写出简洁实用还漂亮的代码楼呢?这25个超惊艳的Python代码写法,你一定要学会!

前言 Python可以用于复杂的数据分析和Web开发项目&#xff0c;还能以极少的代码行数完成令人惊叹的任务。本文将分享25个简短的Python代码示例&#xff0c;用来展示Python编程语言的魅力和效率。 1.列表推导式 Python的列表推导式提供了一种优雅的方法来创建列表。 # 将一个…

以太坊==MetaMask获取测试币最新网址

估算分数https://community.infura.io/t/unable-to-receive-sepolia-eth-from-faucet/7715 Gitcoin Passport 水龙头地址&#xff0c;填入自己的测试地址 水龙头项目地址 GitHub - pk910/PoWFaucet: Modularized faucet for EVM chains with different protection methods (…

从0开发一个Chrome插件:用户反馈与更新 Chrome 插件

前言 这是《从0开发一个Chrome插件》系列的第二十二篇文章,也是最终篇,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发…

2023年JCR影响因子正式发布,点击查看能源与燃料领域期刊变化【持续更新02】

2024年6月20日&#xff0c;科睿唯安发布了2024年度《期刊引证报告》(Journal Citation Reports&#xff0c;JCR)&#xff0c;报告覆盖全面的高质量期刊资源&#xff0c;提供了丰富的数据、指标和分析。今年JCR的最大变化为&#xff1a;把属于不同数据库&#xff0c;但属于同一学…

学习笔记:(3)荔枝派Nano在lvgl下使用矢量字体显示中文(全志F1C200S))

荔枝派Nano在lvgl下使用矢量字体显示中文 1.软件版本要求2.在buildroot下编译freetype三级目录 1.软件版本要求 buildroot 2023.05.xFreeType 2.13.1lvgl v8.3.9lv_drivers v9.0.0-dev 2.在buildroot下编译freetype 三级目录

Linux ComfyUI安装使用;Stable Diffusion 3使用

1、Linux ComfyUI安装使用 参考: https://zhuanlan.zhihu.com/p/689021495 安装步骤: ## 1、下载ComfyUI git clone https://github.com/comfyanonymous/ComfyUI ## 2、进入ComfyUI,安装依赖包 cd ComfyUI pip install -r requirements.txt ## 3\安装插件 cd custom_nodes…

FEC 向前纠错编码

随写&#xff0c;看的有点杂&#xff0c;简单记一下。 应该叫ReedSolomon FEC RS算法简单来讲就是&#xff0c;根据已有数据&#xff0c;构造模型&#xff0c;然后根据模型判纠错&#xff1f; 简单来讲&#xff0c;两点确定一条直线&#xff0c;直线直线上的点都会满足 y kx…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-18GPU

18GPU import torch from torch import nn#使用CPU torch.device(cpu)#使用GPU #cuda:0和cuda是等价的 #是一个上下文管理器&#xff0c;用于在其上下文范围内临时设置默认CUDA设备 torch.cuda.device(cuda)#如果有多个GPU,torch.device(fcuda:{i}),表示使用第i块GPU&#xff…

探索HTML中的元素关系:父元素、子元素、祖先元素与后代元素

在HTML的世界里&#xff0c;元素之间的关系构成了网页结构的基础。理解这些关系对于前端开发者来说至关重要&#xff0c;它们影响着样式的继承、事件的冒泡等关键概念。本文将介绍HTML中的几种基本元素关系&#xff1a;父元素、子元素、祖先元素和后代元素&#xff0c;并提供实…