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中__init__()方法的高级应用
May 11 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
Tornado 多进程实现分析详解
Jan 12 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
python 实现两个线程交替执行
May 02 Python
python 读取.nii格式图像实例
Jul 01 Python
Python基于xlutils修改表格内容过程解析
Jul 28 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP基本语法总结
2014/09/06 PHP
PHP文件操作方法汇总
2015/07/01 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
python制作花瓣网美女图片爬虫
2015/10/28 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
平面设计专业大学生职业规划书
2014/03/12 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
安全保证书
2015/01/16 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js