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基础教程之字典操作详解
Mar 25 Python
更改Python命令行交互提示符的方法
Jan 14 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
python实现简单登陆流程的方法
Apr 22 Python
python筛选出两个文件中重复行的方法
May 31 Python
详解python中的json和字典dict
Jun 22 Python
Flask框架配置与调试操作示例
Jul 23 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
利用Python实现Picgo图床工具
Nov 23 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 array_filter除去数组中的空字符元素
2020/06/21 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python多线程http压力测试脚本
2019/06/25 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
python中pop()函数的语法与实例
2020/12/01 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
计划生育标语
2014/06/23 职场文书
经济类毕业生求职信
2014/06/26 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
院系推荐意见
2015/06/05 职场文书