位置: 编程技术 - 正文

Python中内置的日志模块logging用法详解(python日志类)

编辑:rootadmin

推荐整理分享Python中内置的日志模块logging用法详解(python日志类),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 日期库,利用python内置库calendar,python中日期的数据类型,python怎么处理日期数据,python写日志文件,利用python内置库calendar,python中日期,python .days,内容如对您有帮助,希望把文章链接给更多的朋友!

logging模块简介

Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式。logging模块与log4j的机制是一样的,只是具体的实现细节不同。模块提供logger,handler,filter,formatter。

logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。 handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。 filter:提供一种优雅的方式决定一个日志记录是否发送到handler。 formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

与log4j类似,logger,handler和日志消息的调用可以有具体的日志级别(Level),只有在日志消息的级别大于logger和handler的级别。

logging用法解析

1. 初始化 logger = logging.getLogger("endlesscode"),getLogger()方法后面最好加上所要日志记录的模块名字,后面的日志格式中的%(name)s 对应的是这里的模块名字2. 设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志3. Handler,常用的是StreamHandler和FileHandler,windows下你可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上4. formatter,定义了最终log信息的顺序,结构和内容,我喜欢用这样的格式 '[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S',%(name)s Logger的名字%(levelname)s 文本形式的日志级别%(message)s 用户输出的消息%(asctime)s 字符串形式的当前时间。默认格式是 “-- ::,”。逗号后面的是毫秒%(levelno)s 数字形式的日志级别%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有%(filename)s 调用日志输出函数的模块的文件名%(module)s 调用日志输出函数的模块名%(funcName)s 调用日志输出函数的函数名%(lineno)d 调用日志输出函数的语句所在的代码行%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数%(thread)d 线程ID。可能没有%(threadName)s 线程名。可能没有%(process)d 进程ID。可能没有5. 记录 使用object.debug(message)来记录日志下面来写一个实例,在CMD窗口上只打出error以上级别的日志,但是在日志中打出debug以上的信息

运行一下将会看到CMD窗口只记录两条,spam.log中记录了五条日志

当一个项目比较大的时候,不同的文件中都要用到Log,可以考虑将其封装为一个类来使用

Python中内置的日志模块logging用法详解(python日志类)

这样每次使用的时候只要实例化一个对象就可以了

如果想在CMD窗口中对于error的日志标红,warning的日志标黄,那么可以使用ctypes模块

多模块使用logginglogging模块保证在同一个python解释器内,多次调用logging.getLogger('log_name')都会返回同一个logger实例,即使是在多个模块的情况下。所以典型的多模块场景下使用logging的方式是在main模块中配置logging,这个配置会作用于多个的子模块,然后在其他模块中直接通过getLogger获取Logger对象即可。配置文件:

主模块main.py:

子模块mod.py:

子子模块submod.py:

然后运行python main.py,控制台输出:

可以看出,和预想的一样,然后在看一下tst.log,logger配置中的输出的目的地:

tst.log中没有root logger输出的信息,因为logging.conf中配置了只有main logger及其子logger使用RotatingFileHandler,而root logger是输出到标准输出。

Python网络编程中urllib2模块的用法总结 一、最基础的应用importurllib2url=r'

Python使用cookielib模块操作cookie的实例教程 cookielib是一个自动处理cookies的模块,如果我们在使用爬虫等技术的时候需要保存cookie,那么cookielib会让你事半功倍!他最常见的搭档模块就是python下的u

Python的面向对象编程方式学习笔记 类与实例类与实例相互关联着:类是对象的定义,而实例是真正的实物,它存放了类中所定义的对象的具体信息。下面的示例展示了如何创建一个类:cl

标签: python日志类

本文链接地址:https://www.jiuchutong.com/biancheng/386973.html 转载请保留说明!

上一篇:浅析Python的web.py框架中url的设定方法(python,web)

下一篇:Python网络编程中urllib2模块的用法总结(python3网络编程)

  • 计提并结转所得税分录
  • 印花税的缴纳方式有哪三种
  • 个人所得税纳税义务人
  • 企业给员工交公积金国家有规定的
  • 非税收入一般缴款书一式几联
  • 免税行业可以开什么发票
  • 展位费怎么入账
  • 申报工资总额填错了
  • 百望云票收费吗
  • 注册资金印花税减半政策
  • 公共电话亭的话费收入如何做税务处理呢?
  • 补交增值税怎么处理
  • 房屋出售缴纳税种
  • 境内企业转让境外股权税收
  • 外汇收不到会不会丢
  • 运输发票交印花税吗
  • 甲公司采用租赁方式租入一台大型设备
  • 老版普通增值税发票还能用吗
  • 出口发票认证相符要多久
  • 研发支出期末列报
  • 跨年会计分录错误
  • 增值税可以提前申报不?
  • 冲减管理费用的情况
  • 税务稽查补缴增值税税款的账务处理
  • 鸿蒙系统如何删除桌面图标
  • 期间费用可以计入产品成本的费用吗
  • deepin如何设置网络
  • 小规模纳税人销售自己使用过的汽车
  • PHP:mb_convert_variables()的用法_mbstring函数
  • PHP:highlight_string()的用法_misc函数
  • 企业注销时实收资本需要交税吗
  • 出口退税转内销的话如何算发票金额
  • 固定资产的主要特征有哪些
  • 城建税教育费附加和地方教育费附加税率
  • 棕榈滩的读音
  • 小规模纳税人报税期是哪几个月
  • 购买商品的会计分录贷方能写应付账款
  • add files to archive
  • 【深度学习笔记】特征融合concat和add的区别
  • vuecli项目实战
  • php curl 封装
  • 母子公司转让不动产 契税
  • 税费减免政策2020
  • 招待费住宿费专票
  • 进项税转出的会计分录
  • MYSQL ERROR 1045 (28000): Access denied for user (using password: YES)问题的解决
  • 处置固定资产净收益属于利得吗
  • 进销存的原理
  • 什么是异地企业
  • 营业外收入交企业所得税吗
  • 未支付怎么取消
  • 资产减值损失为正数代表什么意思
  • 银行手续费发票未到怎样做账
  • 电子银行承兑汇票能拆票吗
  • 土地的入账科目
  • 费用先付款后收到发票的会计分录
  • 生产型企业入库管理办法
  • 会计账簿有哪些格式
  • 采用账龄分析法计提坏账准备
  • 建账怎么建
  • mysql数据库详解
  • windows开始菜单在哪里
  • centos开机自动运行
  • winxp系统笔记本电脑如何开启无线网络
  • macos触控
  • win7系统谷歌浏览器错误代码a00a0017
  • perl -p -e
  • JavaScript数组删除元素
  • string获取文件名
  • Cocos2dx3.2 Crazy Tetris 绘制不规则方块 遮罩(ClippingNode的使用)
  • shell的逻辑运算符
  • Node.js中的核心模块包括哪些内容?
  • shell函数参数
  • shell 比较大小
  • 安卓开发常见问题解决
  • 2020 unity
  • Android自定义控件开发入门与实战 百度网盘
  • jquery网页跳转
  • Metaio in Unity3d 教学--- 三. 使用ID Marker作为扫描目标
  • android自定义ui
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设