日志处理logging
前言
什么是日志?有什么作用?日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。
由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的更多相关文章
- Oracle补全日志(Supplemental logging)
Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...
- 日志模块logging使用心得
在应用程序使用中,日志输出对应用维护人员.开发人员判断程序的问题起重要作用. 那么在python中如何定义程序的日志输出? 推荐使用日志模块logging 需求:实现日志内容输出在文件中和控制器中 i ...
- Python日志输出——logging模块
Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...
- python日志模块logging
python日志模块logging 1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...
- python 重要的日志模块logging
一,logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...
- 【python】【logging】python日志模块logging常用功能
logging模块:应用程序的灵活事件日志系统,可以打印并自定义日志内容 logging.getLogger 创建一个log对象 >>> log1=logging.getLogger ...
- Python 日志模块logging
logging模块: logging是一个日志记录模块,可以记录我们日常的操作. logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开. logging日志等级: ...
- Python日志模块logging&JSON
日志模块的用法 json部分 先开一段测试代码:注意 str可以直接处理字典 eval可以直接将字符串转成字典的形式 dic={'key1':'value1','key2':'value2'} ...
- python中的第三方日志模块logging
基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...
- Pyhon 日志管理 -- logging
Pyhon 日志管理 -- logging 一直觉得运行程序是能打印日志是一个神奇的事情,不懂日志产生的原理,后来听说Pyhton 有一个logging模块,So,要好好研究一下. 先贴出代码,看看她 ...
随机推荐
- 新一代大数据任务调度 - Apache DolphinScheduler喜提十大开源新锐项目 & 最具人气项目
经 10000+ 开发者公开票选,20+专家评审. 10+ 主编团打分,历经数月打磨,11 月 19 日,由InfoQ 发起并组织的[2020中国技术力量年度榜单评选]结果正式揭晓. 2020 年度十 ...
- 实现一个会动的鸿蒙 LOGO
本文将带大家简单实现一个会动的鸿蒙 LOGO. emmm,写本文的动机是之前在掘金看到一篇实现鸿蒙 LOGO 的文章 -- 产品经理:鸿蒙那个开场动画挺帅的 给咱们页面也整一个呗 鸿蒙的 LOGO 本 ...
- Windows批量修改文件
如图我是建立了壁纸文件夹 Windows自带的排序方式 如何不用自带的呢? 在这个文件夹里面建一个.txt文件 如下 ok第二步骤 将UTF-8格式改为ANSI格式 点击文件-另存为ANSI格式-替换 ...
- 「题解报告」CF1067A Array Without Local Maximums
大佬们的题解都太深奥了,直接把转移方程放出来让其他大佬们感性理解,蒟蒻们很难理解,所以我就写了一篇让像我一样的蒟蒻能看懂的题解 原题传送门 动态规划三部曲:确定状态,转移方程,初始状态和答案. --神 ...
- KingbaseES 与 Oracle 用户口令管理与资源管理
一.概述 KingbaseES可以对用户口令与用户占用资源进行必要的管理.其管理方式,在这里与Oracle数据库进行参考比较. KingbaseES 使用扩展插件建立的系统参数,这组参数可以对数据库资 ...
- Windows Server体验之SSH远程连接
经过之前的各种远程管理方法,Windows Server可以被很好的管理,也能符合大多数Windows管理员的使用习惯.不过既然是命令行版本的Windows能不能和Linux一样管理呢?Windows ...
- AQS:Java 中悲观锁的底层实现机制
介绍 AQS AQS(AbstractQueuedSynchronizer)是 Java 并发包中,实现各种同步组件的基础.比如 各种锁:ReentrantLock.ReadWriteLock.Sta ...
- 使用 Loki 进行日志报警(二)
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492374&idx=1&sn=d09f6db623 ...
- Kubernetes Operator: Operator
Operator 就可以看成是 CRD 和 Controller 的一种组合特例,Operator 是一种思想,它结合了特定领域知识并通过 CRD 机制扩展了 Kubernetes API 资源,使用 ...
- 重新安装kuboard后,原先配置的CI/CD命令都没了,需要重新创建
背景介绍 使用如下命令创建的kuboard服务,上一层用nginx设置代理,用域名访问使用的 docker run -d \ --restart=always \ --name=kuboard \ - ...