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元组操作实例解析
Sep 23 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
TensorFlow数据输入的方法示例
Jun 19 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python计算IV值的示例讲解
Feb 28 Python
python 数据库查询返回list或tuple实例
May 15 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
如何理解及使用Python闭包
Jun 01 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
输出控制类
2006/10/09 PHP
在线增减.htpasswd内的用户
2006/10/09 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
PHP目录操作实例总结
2016/09/27 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
js实现双色球效果
2020/08/02 Javascript
Python3.7 dataclass使用指南小结
2019/02/22 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
运动会100米解说词
2014/01/23 职场文书
高校教师自荐信范文
2014/03/13 职场文书
联欢晚会主持词
2014/03/25 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
计划生育证明格式范本
2014/09/12 职场文书
刑事代理授权委托书
2014/09/17 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL