Python3中的logging模块提供了较为灵活的事件日志系统

  日志级别

    DEBUG < INFO < WARING(Python默认) < ERROR < FATAL(CRITICAL)

  logging模块常用的类主要有以下几个

    logging.Logger

      主要提供应用程序代码直接使用的接口,一般不会直接实例化,而是通过logging.getLogger(name)得到

    logging.Handler

      日志处理对象的基类,不应实例化,被实例化的应该是其子类,如logging.StreamHandler,它负责发送日志记录到正确的目标

    logging.Formatter

      它决定了以怎样的格式来进行打印日志记录,常用的日志格式如下:

      %(name)s

        Logger对象的名字

      %(levelname)s

        日志级别的英文表示

      %(filename)s

        调用日志输出函数的模块名

      %(lineno)s

        调用日志输出函数的语句所在的代码行

      %(asctime)s

        字符串形式的当前时间

      %(message)s

        用户输出的消息

示例代码

import logging

# 1.初始化日志默认配置
logging.basicConfig(filename='./my.log', # 日志输出文件
level=logging.DEBUG, # 日志写入级别
datefmt='%Y-%m-%d %H:%M:%S', # 时间格式
format='%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s') # 日志写入格式 # 2.打印不同级别的日志记录
logging.debug("debug级别的日志")
logging.info("info级别的日志")
logging.warning("warning级别的日志")
logging.error("error级别的日志")
logging.critical("fatal级别的日志")

1.基础配置仅打印日志到文件


import logging

# Formatter对象 用于决定日志打印的格式
fmt = logging.Formatter("%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s")
fmt.datefmt = "%Y-%m-%d %H:%M:%S" # 可以自定义时间的格式 # Handler对象 将(logger创建的)日志记录发送到合适的目的输出
ch = logging.StreamHandler() # 标准输出流处理对象
ch.setFormatter(fmt)
ch.setLevel(logging.WARNING) fh = logging.FileHandler("./jet.log") # 文件处理对象
fh.setFormatter(fmt)
fh.setLevel(logging.FATAL) # Logger对象 对外暴露的接口
logger = logging.getLogger("Jet")
logger.addHandler(ch)
logger.addHandler(fh)
logger.setLevel(logging.INFO) # 日志级别总控制,以它为最低级别 # 日志输出
logger.debug("debug级别的日志")
logger.info("info级别的日志")
logger.warning("warning级别的日志")
logger.error("error级别的日志")
logger.critical("fatal级别的日志")

2.自定义配置双向输出日志到控制台和文件


参考资料

  http://python.usyiyi.cn/translate/python_352/library/logging.html

  

Python3-logging模块-日志记录的更多相关文章

  1. Python3 logging 模块

    Python3 logging模块 日志模块: 用于便捷记录日志且线程安全的模块 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN ...

  2. 解决logging模块日志信息重复问题

    解决logging模块日志信息重复问题 问题描述 相信大家都知道python的logging模块记录日志信息的步骤: # coding:utf-8 import logging ### 创建logge ...

  3. python3 logging模块

    很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误,警告等信息输出,python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志级别等级:cri ...

  4. Python3 logging模块&ConfigParser模块

    ''' 博客园 Infi_chu ''' ''' logging模块 该模块是关于日志相关操作的模块 ''' import logging # logging.debug('debug') # log ...

  5. 【Pytyon模块】logging模块-日志处理

    一.日志相关概念 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用 ...

  6. Python logging模块使用记录

    1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messa ...

  7. logging模块--日志文件

    初级的使用配置模式类似与print 默认打印waring等级及以上--通过更改等级来测试代码 logging.debug("debug no china") #调试模式 loggi ...

  8. Python logging模块日志存储位置踩坑

    问题描述 项目过程中写了一个小模块,设计到了日志存储的问题,结果发现了个小问题. 代码结构如下: db.py run.py 其中db.py是操作数据库抽象出来的一个类,run.py是业务逻辑代码.两个 ...

  9. python logging模块日志回滚TimedRotatingFileHandler

    # coding=utf-8 import logging import time import os import logging.handlers import re def logger(app ...

随机推荐

  1. CentOS8的网络管理变化

    资料来源: https://www.cnblogs.com/linuxandy/p/10839856.html 1.CentOS8使用NetworkManager.service(简称NM)来管理网络 ...

  2. Java实现 LeetCode 641 设计循环双端队列(暴力)

    641. 设计循环双端队列 设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k. insertFront():将一个元素添加到双端队列头 ...

  3. Java实现 LeetCode 443 压缩字符串

    443. 压缩字符串 给定一组字符,使用原地算法将其压缩. 压缩后的长度必须始终小于或等于原数组长度. 数组的每个元素应该是长度为1 的字符(不是 int 整数类型). 在完成原地修改输入数组后,返回 ...

  4. Java实现蓝桥杯正则切分

    java中提供了对正则表达式的支持. 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码. 注意:只填写缺少代码,不要写任何多 ...

  5. 获取ip地址,并根据ip获取当前省份

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> //methods里面 // 获取 ...

  6. 掌握SpringBoot-2.3的容器探针:基础篇

    欢迎访问我的GitHub 地址:https://github.com/zq2599/blog_demos 内容:原创文章分类汇总,及配套源码,涉及Java.Docker.K8S.DevOPS等 关于& ...

  7. PHP源码进行加密(仅linux)

    加密软件(php_screw) 1.下载网站:http://sourceforge.net/projects/php-screw/ 2.描述: php文件通常以文本格式存贮在服务器端, 很容易被别人读 ...

  8. Java学习之IO流及网络编程

    一.字节 1.1字节输入流(java.io.InputStream) ​ 此抽象类是表示字节输入流的所有类的超类 1.1.1定义了所有子类共性的方法: ​ int read() 从输入流中读取数据的下 ...

  9. Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议

    在通往"Java技术殿堂"的路上,本书将为你指点迷津!内容全部由Java编码的最佳 实践组成,从语法.程序设计和架构.工具和框架.编码风格和编程思想等五大方面,对 Java程序员遇 ...

  10. 软光栅-uraster代码阅读(入门极品)

    软光栅-uraster代码阅读(入门极品) 代码链接:https://github.com/Steve132/uraster 所有的代码都在uraster.hpp中.代码非常简单,适合初学者学习软光栅 ...