日志:记录系统运行时的信息的(调试信息和异常信息)

基本用法:

import logging
logging.debug("这是一条调试信息")
logging.info("这是一条普通信息")
logging.warning("这是一条警告信息")
logging.error("这是一条错误信息")
logging.critical("这是一条严重错误信息")

4钟级别:DEBUG,INFO,WARNING,ERROR,CRITICAL

设置日志级别:

logging.basicConfig(level=logging.INFO)

设置日志格式:

logging.basicConfig(format="xxxxxxx")

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 用户输出的消息 示例代码:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

将日志信息输出到文件中:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(filename="a.log", level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

日志的高级用法

logging日志模块四大组件

组件之间的关系

日志器(logger)需要通过处理器(handler)将日志信息输出到目标位置,如:文件、sys.stdout、网络等;

不同的处理器(handler)可以将日志输出到不同的位置;

日志器(logger)可以设置多个处理器(handler)将同一条日志记录输出到不同的位置;

每个处理器(handler)都可以设置自己的格式器(formatter)实现同一条日志以不同的格式输出到不同的地 方。

每个处理器(handler)都可以设置自己的过滤器(filter)实现日志过滤,从而只保留感兴趣的日志;

简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过 滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。

将日志信息同时输出到控制台和文件中

# 导包
# 创建日志处理器
# 创建控制台处理器 文件处理器
# 创建格式化器
# 把格式化器添加到处理器中
# 把处理器添加到日志器中
# 打印不同级别的日志
# 将日志信息同时输出到控制台和文件中
# 导包
import logging # 创建日志器对象
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # 创建控制台处理器
sh = logging.StreamHandler()
sh.setLevel(logging.INFO) # 创建文件处理器
fh = logging.FileHandler("b.log", encoding="UTF-8")
fh.setLevel(logging.ERROR) # 创建格式化器
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
formatter = logging.Formatter(fmt=fmt) # 把格式化器添加到处理器中
sh.setFormatter(formatter)
fh.setFormatter(formatter) # 把处理器添加到日志器
logger.addHandler(sh)
logger.addHandler(fh) # 打印不同级别的日志
logger.info("info")
logging.warning("warn")
logger.error("error")

fh = logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0)

将日志信息记录到文件中,以特定的时间间隔切换日志文件。

filename: 日志文件名

when: 时间单位,可选参数

  S - Seconds

  M - Minutes

  H - Hours

  D - Days

  midnight - roll over at midnight W

  {0-6} - roll over on a certain day;

  0 - Monday

interval: 时间间隔

backupCount: 日志文件备份数量。

如果backupCount大于0,那么当生成新的日志文件时, 将只保留backupCount个文件,删除最老的文件。

logging日志管理的更多相关文章

  1. logging日志管理-将日志写入文件

    # -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...

  2. logging日志管理--将日志打印在屏幕上

    # -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...

  3. 函数式编程(logging日志管理模块)

    本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...

  4. Python logging日志管理

    import logging logger = logging.getLogger("simple_example") logger.setLevel(logging.DEBUG) ...

  5. 使用Common.Logging+log4net规范日志管理【转载】

    使用Common.Logging+log4net规范日志管理   Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大 ...

  6. Pyhon 日志管理 -- logging

    Pyhon 日志管理 -- logging 一直觉得运行程序是能打印日志是一个神奇的事情,不懂日志产生的原理,后来听说Pyhton 有一个logging模块,So,要好好研究一下. 先贴出代码,看看她 ...

  7. 基于Common.Logging + Log4Net实现的日志管理

    前言 Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本.其目的是为 "所有的.n ...

  8. 使用Common.Logging+log4net规范日志管理

    Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志.NLog ...

  9. ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

随机推荐

  1. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)解决方案

    java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql. ...

  2. 0014SpringBoot结合thymeleaf实现登录功能

    该登录功能需要实现的需求如下: 1.输入用户名密码,如果验证通过,进入首页,并显示登录的用户名 2.如果验证不通过,则重新进入登录页面,并显示“用户名密码错误” 3.如果未经登录,不能直接访问首页等静 ...

  3. 如何使用python内置的request发送JSON格式的数据

    使用步骤如下: 一.如果想发送json格式的数据,需要使用request模块中的Request类来创建对象,作为urlopen函数的参数 二.header中添加content-type为applica ...

  4. 一个 介绍 superset Kylin 以及大数据生态圈的 博文

    superSet http://superset.apache.org/installation.html https://segmentfault.com/a/1190000005083953 ht ...

  5. LaTex编译时出错:PK font *** could not be created

    参考https://blog.csdn.net/dancing11/article/details/60978642 在用TeXworks (Miktex) 编译OSA投稿模板时,遇到错误PK fon ...

  6. HTML 003 元素

    HTML 元素 HTML 文档由 HTML 元素定义. HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href=" ...

  7. 009——C#全局变量定义

    (一)窗体二定义,static静态 public static byte[] waveform_data = { }; // 数据,在串口接收中变化 public static bool wavefo ...

  8. sql server 综合使用的例子

    exec sp_helptext prosampleoldstyle_usp -- ============================================= -- ========= ...

  9. asp.net利用webuploader实现超大文件分片上传、断点续传

    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...

  10. P1213 时钟

    题目描述 考虑将如此安排在一个 3 x 3 行列中的九个时钟: 目标要找一个最小的移动顺序将所有的指针指向12点.下面原表格列出了9种不同的旋转指针的方法,每一种方法都叫一次移动.选择1到9号移动方法 ...