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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
python关闭windows进程的方法
Apr 18 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python中base64与xml取值结合问题
Dec 22 Python
Django如何使用jwt获取用户信息
Apr 21 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
Python编写nmap扫描工具
Jul 21 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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 URL编码解码函数代码
2009/03/10 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
JS中表单的使用小结
2014/01/11 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python去除文件中重复的行实例
2018/06/29 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python创建文本文件的简单方法
2020/08/30 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
党员入党表决心的话
2014/03/11 职场文书
服务理念口号
2014/06/11 职场文书
销售人员求职信
2014/07/22 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
离婚协议书格式
2015/01/26 职场文书
前台文员岗位职责
2015/02/04 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis