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. 50个SQL语句(MySQL版) 问题十三

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  2. jchdl - GSL实例 - MulC2(有符号数的乘法)

      这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jch ...

  3. jchdl - GSL实例 - Counter

    https://mp.weixin.qq.com/s/BjQtQE8DfaKP1XwcTiCwVg   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https: ...

  4. 前端HTML学习 table标签 知识点与使用

    表格基本结构 <table> <tr> <td>单元格</td> </tr> </table> < tr >表示 行 ...

  5. Java实现 LeetCode 790 多米诺和托米诺平铺(递推)

    790. 多米诺和托米诺平铺 有两种形状的瓷砖:一种是 2x1 的多米诺形,另一种是形如 "L" 的托米诺形.两种形状都可以旋转. XX <- 多米诺 XX <- &q ...

  6. (Java实现) 均分纸牌

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  7. Java实现 LeetCode 543. 二叉树的直径(遍历树)

    543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1 / \ 2 3 / ...

  8. java实现古堡算式

    ** 古堡算式** 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生 ...

  9. java实现第六届蓝桥杯打印大X

    打印大X 打印大X 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度. 为了便于比对空格,所有的空白位置都以句点符来代替. 要求输入两个整数m n,表示笔的宽度,X的高度.用 ...

  10. Linux 独立服务管理

    RPM包安装在默认位置 /etc/init.d/:启动脚本位置 /etc/sysconfig/:初始化环境配置文件位置 /etc/:配置文件位置 /etc/xinetd.conf/:xinetd配置文 ...