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 从远程服务器下载日志文件的程序
Feb 10 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
python使用nntp读取新闻组内容的方法
May 08 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
Python爬取成语接龙类网站
Oct 19 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
Python微信操控itchat的方法
May 31 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Django框架反向解析操作详解
Nov 28 Python
python+opencv实现目标跟踪过程
Jun 21 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
社区(php&&mysql)四
2006/10/09 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
python编码最佳实践之总结
2016/02/14 Python
python爬取51job中hr的邮箱
2016/05/14 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
架构师岗位职责
2013/11/18 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
给校长的建议书200字
2014/05/16 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers