前言

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

由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. LuoguP1799 数列_NOI导刊2010提高 (动态规划)

    $ f[j]=max(f[i−1][j],f[i−1][j−1]+(x == j) $ #include <iostream> #include <cstdio> #inclu ...

  2. 利用 Word 表格对文字、图文进行排版

    在以前,Web 前端工程师利用 <table /> 元素对网页布局进行排版,但是如今却不推荐此元素排版了,而是改用 <div /> 元素和 CSS 弹性布局(或网格布局)对网页 ...

  3. Python自学教程7:字典类型有什么用

    字典是Python中的一个重要操作,如果字典玩得顺,很多其他的数据类型就可以一通百通. Python字典的定义 字典使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分隔. 键必须是不可变 ...

  4. 回溯、贪心、DP的区别和联系

    四大常用算法:分治.贪心.回溯.动态规划 回溯算法是个"万金油".基本上能用跟动态规划.贪心解决的问题,都可以用回溯去解决.回溯算法相当于穷举搜索,穷举所有情况,然后得到最优解.不 ...

  5. [NOI P模拟赛] 传统艺能(子序列自动机、矩阵乘法,线段树)

    (2:00)OID:"完了,蓝屏了!"(代码全消失) 众人欢呼 OID:开机,"原题测试--" (30min later)OID 开始传统艺能: " ...

  6. XXL-JOB最佳实践与升级指南

    前言: xxl-job是国内一款使用者比较多的分布式任务调度平台,我们内部从19年开始使用该款开源软件,使用的是2.0.1版本,并在此基础上做了二次开发,添加了一些定制化的功能.随着使用该定时器的业务 ...

  7. 牛客练习赛99—C

    数的和与积 https://ac.nowcoder.com/acm/contest/34330/C 思路: 2和4是不可以的,除了3意外其他的都可以用三项解决,其中一项为1,剩余两项分别设为x,y.  ...

  8. 如何在 Windows 和 Linux 上确定系统使用的是 MBR 分区还是 GPT 分区详细步骤!!!

    在 Windows 上检查系统使用的是 MBR 分区还是 GPT 分区 点击放大镜搜索输入disk 点击打开 进入之后,右键点击你想要检查分区方案的磁盘,在右键菜单里选择属性! 在属性窗口,切换到卷, ...

  9. KingbaseES R6 集群 recovery 参数对切换的影响

    案例说明:在KingbaseES R6集群中,主库节点出现宕机(如重启或关机),会产生主备切换,但是当主库节点系统恢复正常后,如何对原主库节点进行处理,保证集群数据的一致性和安全,可以通过对repmg ...

  10. 阿里云Centos7部署私人CSGO服务器

    大四毕业生,论文和答辩分别以1.8%的重复率和只答不辨的态度双双过关.现在就是在家等着学校发毕业证了.顺带学学驾驶...可是我这么一个喜欢折腾的人,怎么能够让自己接受这么无聊的咸鱼时光呢?因为这个寒假 ...