前言

  什么是日志?有什么作用?日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。

由python内置了一个logging模块,用户可以通过调用debug()、 info()、 warning()、 error() 、 critical()和notset()等方法进行日志的收集和处理。

一、日志等级

级别 数字值 作用
NOSET 0  废话,等于没写,毫无用处的文字
DEBUG 10 调试,一些额外信息。备注,往往与主体功能无关
INFO 20 主体功能的信息,做了些啥
WARNING 30 警告,提醒下次有可能会触发错误
ERROR 40  错误
CRITICAL 50  极其严重的错误,会影响系统的崩溃

二、日志使用

import logging

#1、初始化日志收集器
logger = logging.getLogger("这是日志收集器名称") #2、设置日志收集器的等级,高于或等于这个级别的日志我才记录
logger.setlevel("DEBUG") #3、初始化日志处理器handler:终端流处理器streamhandler和文件流处理器filehandler
stream_handler = logging.StreamHandler() #4、设置终端流处理器的等级。高于或等于这个级别的日志我才显示
stream_handler.setlevel("INFO") #5、日志收集器logger添加handler
logger.addHandler(stream_handler) #6、初始化日志格式format:
format_str = "%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s" #7、handler添加format
stream_handler.setFormatter(format_str) #8、调用
logger.info("信息")
logger.debug(“调试信息”)

终端流处理器:日志直接在终端中显示(我用的是pycharm,那么就是pycharm控制台显示)

文件流处理器:将日志存储在文件中

一个收集器可以对应多个处理器,也就是说,可以同时设置终端流处理器和文件处理器

file_handler = logging.FileHandler("log.txt",encoding="utf8")

file_handler.setLevel("INFO")

#添加handler
logger.addHandler(file_handler) #handler添加format
file_handler.setFormatter(fmt) #调用

setlevel():相当于过滤器,不设置参数时默认的是WARNING,要大写。只有高于或等于设置的级别才显示。

logger和handler的级别需要比较,哪个级别更高,就以哪个为准

日志格式:https://docs.python.org/zh-cn/3/library/logging.html可以上官方网站查看需要的格式

三、日志封装

import logging

#日志的二次封装
def logging_function(logger_name,
logger_level="DEBUG",
handler_level="INFO",
log_file_name="logging.txt",
encoding="utf8",
format_str="%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s"
): logger = logging.getLogger(logger_name)
logger.setLevel(logger_level)
# 终端流处理器
stream_hangdler = logging.StreamHandler()
stream_hangdler.setLevel(handler_level)
logger.addHandler(stream_hangdler)
# 文件处理器
file_hangdler = logging.FileHandler(log_file_name, encoding=encoding)
file_hangdler.setLevel(handler_level)
logger.addHandler(file_hangdler)
fmt = logging.Formatter(format_str)
stream_hangdler.setFormatter(fmt)
file_hangdler.setFormatter(fmt)
return logger #调用
logging_name="日志收集"
logger=logging_function(logging_name)

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

  1. Oracle补全日志(Supplemental logging)

    Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...

  2. 日志模块logging使用心得

    在应用程序使用中,日志输出对应用维护人员.开发人员判断程序的问题起重要作用. 那么在python中如何定义程序的日志输出? 推荐使用日志模块logging 需求:实现日志内容输出在文件中和控制器中 i ...

  3. Python日志输出——logging模块

    Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...

  4. python日志模块logging

    python日志模块logging   1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...

  5. python 重要的日志模块logging

    一,logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  6. 【python】【logging】python日志模块logging常用功能

    logging模块:应用程序的灵活事件日志系统,可以打印并自定义日志内容 logging.getLogger 创建一个log对象 >>> log1=logging.getLogger ...

  7. Python 日志模块logging

    logging模块: logging是一个日志记录模块,可以记录我们日常的操作. logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开. logging日志等级: ...

  8. Python日志模块logging&JSON

    日志模块的用法 json部分 先开一段测试代码:注意  str可以直接处理字典   eval可以直接将字符串转成字典的形式 dic={'key1':'value1','key2':'value2'} ...

  9. python中的第三方日志模块logging

    基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...

  10. Pyhon 日志管理 -- logging

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

随机推荐

  1. ShadeRec类定义

    这个类主要是用于记录碰撞数据的类,书中已经说的很清楚了.这个类之后会慢慢扩展,会在本随笔中扩展,先定义简单的,方便编译看看效果. 类声明(World是之后主程序中的类,最后测试时再实现): #ifnd ...

  2. 两天时间学习的html的知识笔记

    坚持努力背 特殊字符: 空格符  < 小于号 <> 大于号 >& 和号 &¥ 人民币 ¥  版权 ©R 注册商标 ®. 摄氏度 ° 正负号 ±X 乘号 × 除号 ...

  3. 美女 Committer 手把手教你部署 Apache DolphinScheduler 单机版

    还在为如何部署Apache DolphinScheduler 发愁么?自上篇<美女 Committer 手把手教你使用海豚调度>的视频发布后,受到社区伙伴们的热烈欢迎.但个别小伙伴在部署这 ...

  4. CF383C Propagating tree (线段树,欧拉序)

    \(tag\)没开够\(WA\)了一发... 求出\(dfs\)序,然后按深度分类更新与查询. #include <iostream> #include <cstdio> #i ...

  5. nmtui 字符界面图形模式配置

    一.通过nmtui配置网络参数 Linux系统配置网络参数的方式有很多种,其中最简单最直接的方式就是直接修改网卡配置文件,但这种方式也很容易出错,比如说IPADDR.NETMASK.GATEWAY等参 ...

  6. 我开源了一个Go学习仓库|笔记预览

    前言 大半个月前我参与了字节后端面试,未通过第四面,面试总结写在了这篇文章: https://juejin.cn/post/7132712873351970823 在此文的末尾,我写到为了全面回顾Go ...

  7. Linux-shell笔记1

    一次执行很多命令,可以用:分割每个命令,依次运行所有命令.但是不是进程列表,要用()包围命令才是进程列表.它们有什么差别呢?进程列表是启动了一个子SHELL来执行的.用echo $BASH_SUBSH ...

  8. 一篇文章教你学会ASP.Net Core LINQ基本操作

    一篇文章教你学会ASP.Net Core LINQ基本操作 为什么要使用LINQ LINQ中提供了很多集合的扩展方法,配合lambda能简化数据处理. 例如我们想要找出一个IEnumerable< ...

  9. Visual Studio 2022 Community 不完全攻略

    0. 前言 建议结合视频阅读哦 Visual Studio 2022 Community 不完全攻略 有问题或者意见欢迎评论 ! 1. 下载&安装 Visual Studio Communit ...

  10. Dockerfile中ADD命令详细解读

    ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中. 其格式是: ADD 源路径 目标路径 #test FROM ubuntu MAINTAINER ...