日志模块-logging模块

日志模块 -logging(非常重要)

  • 记录用户行为
  • 程序运行过程
  • 程序错误记录
  1. logging.debug()通常调试时用到的日志信息
  2. logging.info() #证明事情按照预期的那样工作
  3. longging.warning() #表明发生了意外,或者不就得将来发生的问题(如:磁盘满了)软件还是正常的工作
  4. longging.error() #由于更严重的问题导致软件已经不能继续执行某些功能
  5. longging.critical() #严重错误,表示软件不能再继续运行下去
    • 程序默认级别在info以上

        # 使用#导入logging模块import logginglogging.debug('低级别的拍错信息')   #低级别的排错信息logging.info('正常的信息')   #正常信息logging.warning('警告信息') #警告信息logging.error('错误信息')   #错误信息logging.critical('高级别的错误信息')    #高级别错误信息#结果WARNING:root:警告信息ERROR:root:错误信息CRITICAL:root:高级别的错误信息

简单配置

import logging#配置logging  
logging.basicConfig(filename='logger.log', level=logging.INFO)logging.debug('低级别的拍错信息')   #低级别的排错信息
logging.info('正常的信息')   #正常信息
logging.warning('警告信息') #警告信息
logging.error('错误信息')   #错误信息
logging.critical('高级别的错误信息')    #高级别错误信息#结果
当前文件路径下生成了文件logger.log
其内容如下:
INFO:root:正常的信息
WARNING:root:警告信息
ERROR:root:错误信息
CRITICAL:root:高级别的错误信息
  • 因为通过level=logging.INFO设置了日志的通知级别,所以文件中打印出了INFO的信息

basicConfig()常用配置参数

    logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。format:指定handler使用的日志显示格式。datefmt:指定日期时间格式。level:设置rootlogger(后边会讲解具体概念)的日志级别stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。format参数中可能用到的格式化串:%(name)s Logger的名字%(levelno)s 数字形式的日志级别%(levelname)s 文本形式的日志级别%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有%(filename)s 调用日志输出函数的模块的文件名%(module)s 调用日志输出函数的模块名%(funcName)s 调用日志输出函数的函数名%(lineno)d 调用日志输出函数的语句所在的代码行%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒%(thread)d 线程ID。可能没有%(threadName)s 线程名。可能没有%(process)d 进程ID。可能没有%(message)s用户输出的消息      
  • basicConfig有两个坑(缺点)
    1. 对中文的兼容问题,无法解决中文的乱码问题
    2. 不能同时往文件和屏幕输出

利用对象的方式创建logging

  • 程序的充分解耦,让程序变得高可定制化
  • 各功能相当于绑定,功能的添加时通过对象之间的绑定

      import logging#创建一个logging对象logger = logging.getLogger()#创建一个logging文件对象fh = logging.FileHandler('text.log', encoding='utf-8', mode='a')#创建一个logging控制台对象sh = logging.StreamHandler()    #输出至什么地方#输出格式formatter = '%(asctime)s%(lineno)d'#创建输出格式的对象fm = logging.Formatter(formatter)   #设置一个格式#文件对象和控制台对象添加输出格式fh.setFormatter(fm) #以什么格式输出至什么地方sh.setFormatter(fm)#给logging对象添加logger.addHandler(fh)logger.addHandler(sh)logging.debug('低级别的拍错信息')   #低级别的排错信息logging.info('正常的信息')   #正常信息logging.warning('警告信息') #警告信息logging.error('错误信息')   #错误信息logging.critical('高级别的错误信息')    #高级别错误信息
  • 非常灵活,自定义的程度很高,可以设定不同的输出位置和不同的格式
  • logging库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过logger.setLevel(logging.Debug)设置级别,当然,也可以通过
    fh.setLevel(logging.Debug)单对文件流设置某个级别

总结

配置方式两种

  • basicConfig()直接设置全局
    • 不兼容中文模式
    • 不能同时多位置输出
  • logging对象创建
    • 高定制,高灵活

转载于:https://www.cnblogs.com/liliudong/p/9660663.html

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

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

相关文章

Leetcode--字符串压缩

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a…

GPT-3和AlphaFold 2震撼2020,2021年AI最大看点在哪儿?

来源:机器学习研究组订阅2020年并不缺重磅新闻,但人工智能依然够杀出重围,走进主流视野。尤其是GPT-3,它展示了人工智能即将以全新的方式深入我们的日常生活。这些进步赋予了未来很多可能,预测未来变得并不容易&#x…

SpringBoot RequestBody ajax提交对象

前端实现: var student {"name":1,"age":2,"score":3 }; $.ajax({ url:"student/test/delStudentByPrimaryKey.action",contentType:"application/json;charsetUTF-8",type:POS…

Leetcode--1160.拼写单词(Java)

给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认…

宇宙与无限之谜

文:Alan Lightman译:Sue校对:Rachel在博尔赫斯(Jorge Luis Borges)的《沙之书》(The Book of Sand)中,一个神秘的传教者敲开了故事主人公的门,想要卖给他一本圣书。这本书…

BZOJ 2124 等差子序列 线段树维护哈希

$ \Rightarrow $ 戳我进BZOJ原题 等差子序列Time Limit: 3 Sec $ \quad $ Memory Limit: 259 MBDescription 给一个 $ 1 $ 到 $ N $ 的排列 $ (A_i) $ &#xff0c;询问是否存在 $ 1 \le p_1<p_2<p_3<p_4<p_5<…<p_ \le N (Len \ge 3) $ &#xff0c; 使得 $…

Leetcode:892. 三维形体的表面积(Java)

在 N * N 的网格上&#xff0c;我们放置一些 1 * 1 * 1 的立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1&#xff1a; 输入&#xff1a;[[2]] 输出&#xff1a;10 示例 2&#xff1a; 输入&#xff1a;[…

微软、IBM们的中国研究院是怎样一步步“躺平”的?

来源&#xff1a; 脑极体IBM中国研究院关闭的消息&#xff0c;又让大家想起了曾经甲骨文、微软、Adobe等外企研究机构离华的新闻。从上世纪末本世纪初来华&#xff0c;十多年情缘突然宣告分手&#xff0c;固然是遗憾的&#xff0c;也更令人好奇背后的原因。公司业绩表现不佳、研…

P1110 [ZJOI2007]报表统计

题目描述 Q的妈妈是一个出纳&#xff0c;经常需要做一些统计报表的工作。今天是妈妈的生日&#xff0c;小Q希望可以帮妈妈分担一些工作&#xff0c;作为她的生日礼物之一。 经过仔细观察&#xff0c;小Q发现统计一张报表实际上是维护一个非负整数数列&#xff0c;并且进行一些查…

斯坦福 AI 课程 10 年发展史

作者&#xff1a;Rachel Oh 、Peter Maldonado转自&#xff1a;机器之心编辑&#xff1a;杜伟、小舟在人工智能领域&#xff0c;斯坦福大学的很多课程都颇受欢迎&#xff0c;如 CS 224N 深度学习自然语言处理和 CS 229 机器学习。这些课程如何一步步发展成为今天的热门课程&…

Leetcode--820:单词的压缩编码(java)

给定一个单词列表&#xff0c;我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如&#xff0c;如果这个列表是 ["time", "me", "bell"]&#xff0c;我们就可以将其表示为 S "time#bell#" 和 indexes [0, 2, 5]。 对于…

Leetcode--130. 被围绕的区域(java)

给定一个二维的矩阵&#xff0c;包含 X 和 O&#xff08;字母 O&#xff09;。 找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后&#xff0c;矩阵变为&#xff1a; X X X X X X X X X X X X…

6G技术长啥样?5大趋势,13个核心技术2030年落地

来源&#xff1a;智东西5G已经展开了全面商用&#xff0c;随着5G在垂直行业的不断渗透&#xff0c;人们对于6G的设想也逐步提上日程。面向2030, 6G将在5G基础上全面支持整个世界的数字化&#xff0c;并结合人工智能等技术的发展&#xff0c;实现智慧的泛在可取、全面赋能万事万…

微积分的未来:DNA、非线性、混沌、复杂系统与人工智能

导语微积分是人类历史上的伟大思想成就之一&#xff0c;也是数学领域不可或缺的一个重要分支。如果没有微积分&#xff0c;人类就不可能发明电视、微波炉、移动电话、GPS、激光视力矫正手术、孕妇超声检查&#xff0c;也不可能发现冥王星、破解人类基因组、治疗艾滋病&#xff…

Leetcode--1111. 有效括号的嵌套深度(Java)

有效括号字符串 仅由 "(" 和 ")" 构成&#xff0c;并符合下述几个条件之一&#xff1a; 空字符串 连接&#xff0c;可以记作 AB&#xff08;A 与 B 连接&#xff09;&#xff0c;其中 A 和 B 都是有效括号字符串 嵌套&#xff0c;可以记作 (A)&#xff0c…

计蒜客第三场

1、有序数组查找 假设一个数组&#xff0c;事先在你未知的情况下&#xff0c;以某一点分段有序排列。比如&#xff1a;&#xff08;0,0,0,1,2,2,3 变成 0,0,1,2,2,3,0&#xff0c;定需要查找的数&#xff0c;在当前数组中查找&#xff0c;存在&#xff0c;返回ture&#xff0c;…

美国防部官员讨论量子科学、5G和定向能的发展

来源&#xff1a;国防科技要闻3月8日&#xff0c;美国防部国防研究与工程办公室负责现代化建设的三名官员在国防工业协会太平洋作战科技虚拟会议上讨论了量子科学、5G和定向能的发展。量子科学量子科学主要负责人保罗洛帕塔表示&#xff0c;国防部在过去的二三十年里一直在进行…

牛客网--密码验证合格程序(Java)

题目描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串 输入描述: 一组或多组长度超过2的子符串。每组占一行 输出描述: 如果符合要求输出&#xff1a;OK&#xff0c;否则输出NG 示例1 输…

9-18 学习如何使用Python包的管理

前提是安装好Anaconda 1.如何安装一个包 这里的语句 package_name为包的名字 例如 你可以在cmd窗口下输入 按下回车后 系统将会进行安装numpy包。 你也可以同时安装多个包&#xff0c;比如同时安装numpy、scipy、pandas包。 命令如下 注&#xff1a;numpy&#xff1a;是Python的…

牛客--合唱队

题目描述 计算最少出列多少位同学&#xff0c;使得剩下的同学排成合唱队形 说明&#xff1a; N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形&#xff1a;设K位同学从左到右依次编号…