Python日志处理模块logging用法解析


Posted in Python onMay 19, 2020

 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。

其主要优点如下:

1.可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;

2.尤其是代码运行在服务器上,当出现问题时可以通过查看日志进行分析。

 logging模块基本使用:

设置logger名称

logger = logging.getLogger(log_name)

设置log级别

logger.setLevel(logging.info)

创建一个handler,用于写入日志文件

fh = logging.FileHandler(log_file)

设置日志级别,默认为logging.WARNING

fh.setLevel(logLevel[log_level])

定义handler的输出格式

formatter = logging.Formatter('%(asctime)s %(name)s [line:%(lineno)d] %(levelname)s %(message)s')

fh.setFormatter(formatter)

添加handler

logger.addHandler(fh)

format

  • %(levelno)s: 打印日志级别的数值
  • %(levelname)s: 打印日志级别名称
  • %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  • %(filename)s: 打印当前执行程序名
  • %(funcName)s: 打印日志的当前函数
  • %(lineno)d: 打印日志的当前行号
  • %(asctime)s: 打印日志的时间
  • %(thread)d: 打印线程ID
  • %(threadName)s: 打印线程名称
  • %(process)d: 打印进程ID
  • %(message)s: 打印日志信息

    示例代码如下:

import logging
import datetime
import os

# 定义日志级别字典
logLevelDic={
  "info":logging.INFO,
  "debug":logging.DEBUG,
  "warning":logging.WARNING,
  "error":logging.ERROR
}

# 日志保存路径
logSavePath=os.path.join(os.getcwd(),"logs")
if not os.path.exists(logSavePath):
  os.makedirs(logSavePath,exist_ok=True)
# 当前时间
curTime=datetime.datetime.now().strftime("%Y%m%d")
# 保存的日志的完整名称
logFile=os.path.join(logSavePath,curTime+".SADCI.log")
# 日志级别
logLevel="error"

class Logger:
  def __init__(self,logFile=logFile,logLevel=logLevelDic["error"]):
    self.logFile=logFile
    self.logLevel=logLevel
    # 设置logger名称
    self.logger=logging.getLogger()
    # 设置参数级别
    self.logger.setLevel(self.logLevel)
    self.formatter=logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    # 判断handlers是否存在
    if not self.logger.handlers:
      # 写入控制台
      consoleStream=logging.StreamHandler()
      consoleStream.setLevel(self.logLevel)
      consoleStream.setFormatter(self.formatter)
      # 写入文件
      fileStream=logging.FileHandler(self.logFile,mode="a")
      fileStream.setLevel(self.logLevel)
      fileStream.setFormatter(self.formatter)
      self.logger.addHandler(consoleStream)
      self.logger.addHandler(fileStream)

def MyLogger():
  return Logger(logFile=logFile,logLevel=logLevelDic[logLevel]).logger


if __name__ == '__main__':
  MyLogger().error("test logg")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中from module import * 的一个坑
Jul 20 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python 处理数据的实例详解
Aug 10 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
celery4+django2定时任务的实现代码
Dec 23 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
详解Python中的测试工具
Jun 09 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
基于PyQT实现区分左键双击和单击
May 19 #Python
Python更换pip源方法过程解析
May 19 #Python
解决Django Haystack全文检索为空的问题
May 19 #Python
浅谈django 重载str 方法
May 19 #Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 #Python
在Django中自定义filter并在template中的使用详解
May 19 #Python
Django Model中字段(field)的各种选项说明
May 19 #Python
You might like
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
javascript实现表单验证
2016/01/29 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
JS实现留言板功能
2017/06/17 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
在django模板中实现超链接配置
2019/08/21 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
python中pow函数用法及功能说明
2020/12/04 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
中层干部岗位职责
2013/12/18 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
学校清明节活动总结
2014/07/04 职场文书
五年级作文之想象作文
2019/10/30 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
MySQL GTID复制的具体使用
2022/05/20 MySQL