logging 是对程序运行中的日志进行输出记录,用户在程序中设置在哪个地方输出什么信息,方便进行之后问题的排查。

logging输出有两种方式:输出至控制台 、 输出至文件

输出至控制台:

import logging
logging.warning('Watch out!')
logging.info('I told you so')

运行上述代码,我们会在控制台看到如下输出:

WARNING:root:Watch out!

info消息并没有出现,这是因为logging默认的输出等级是warn 。

如果想要更改logging的输出等级:在使用logging输出日志前加上语句: logging.basicConfig(level=logging.INFO)

输出至文件:

import logging

logging.basicConfig(filename="mylog.log")

logging.info("I told you so")
logging.warning("Watch out!")

通过在logging.basicConfig 中设置filename,就可以将日志信息输出至指定文件中保存了。同样,默认等级还是Warn。

多次运行上述代码,会发现每次输出的日志信息都会追加在文件后面。

如果想要每次都清空之前的日志信息:使用 filemode 参数,设置 filemode = "w" 。 如果不设置,filemode 默认为 "a"

logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO)

 另外,对于basicConfig() 的调用应该在 info()、warning() 的前面: 因为他被设定为一次性的配置,只有第一次调用会产生操作,随后调用不会再生效(如果没有在一开始指定,那么就会走默认的配置)

自定义日志展示格式:

如果想在每条日志上展示更多的信息,如显示等级、时间日期、模块、行数等,使用basicConfig 中的 format参数来实现

import logging

logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s')

logging.info("I told you so")
logging.warning("Watch out!") # 文件日志展示
2021-10-29 15:50:13,378 root INFO file_logging:10 I told you so
2021-10-29 15:50:13,380 root WARNING file_logging:11 Watch out!

日期/时间展示的默认格式如上,如果想要更多的控制日期/时间展示格式,使用datefmt参数

import logging

logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')

logging.info("I told you so")
logging.warning("Watch out!") # 文件日志展示
10/29/2021 03:53:03 PM root INFO file_logging:10 I told you so
10/29/2021 03:53:03 PM root WARNING file_logging:11 Watch out!

最新文章

  1. Vue 源码解析:深入响应式原理(上)
  2. Apache安装与属性配置
  3. [Unity3D]图形渲染优化、渲染管线优化、图形性能优化
  4. Java主要有那几种文件类型,各自作用
  5. VC++使用WebBrowser控件,强制给控件指定版本显示网页
  6. parse,tryparse区别
  7. 一个fibonacci数列简单求和的问题
  8. 一台机器上运行多个ActiveMq
  9. Linux学习之查找命令find
  10. uva11806
  11. Fedora 19: How to resize/extend (LVM) partition?
  12. Hot swapping
  13. 前端之DOM操作
  14. python批量修改linux主机密码
  15. SpringBoot Actuator
  16. TCP 原理
  17. 【转】struct和typedef struct在C/C++中的区别
  18. Windows 窗体中的事件顺序
  19. vue中使用BetterScroll
  20. WordPress-Word图片上传插件整合教程-Xproer.WordPaster

热门文章

  1. 关于cnpm的卸载与重装
  2. 图论专题 - LibreOJ
  3. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)
  4. TiDB日常运维手册
  5. VMware-SSH协议的认证方式
  6. 如果还有问ARKIME不会部署安装,你就把这篇丢给他!
  7. dism修改easyu中10PEx64.wim文件
  8. CSS控制背景图片100%自适应填充布局
  9. kubeSphere+kubernetes 集群更新证书
  10. pytorch学习笔记(9)--神经网络模型的保存与读取