python实现自定义日志的具体方法


Posted in Python onMay 28, 2021

1、导入logging模块:

import logging

2、创建日志收集器:

logger = logging.getLogger(“日志收集器的name”)

3、设置日志收集器的日志级别:

logger.setLevel(logging.INFO) #设置收集器的级别为INFO。

4、给日志收集器创建输出渠道,根据第一部分的内容知:日志输出渠道包含控制台输出和文件输出。

5、设置日志输出的内容格式。

# 设置日志的输出格式
 
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s"
 
formatter = logging.Formatter(fmt)

6、将设置的日志格式绑定到创建的输出渠道中,即将日志格式与输出渠道关联起来。

7、将设置好的输出渠道,添加到日志收集器。

实例扩展:

import os
import time
import logging

#返回一个logger实例,如果没有指定name,返回root logger。
# 只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。
# 这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。
logger = logging.getLogger('mylogger')
# 设置总日志级别, 也可以给不同的handler设置不同的日志级别
#设置logger的level, level有以下几个级别:
# 级别高低顺序:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
# 如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出 
logger.setLevel(logging.DEBUG)

# 控制台日志和日志文件使用同一个formatter,formatter用于描述日志的格式
formatter = logging.Formatter(
	'%(asctime)s - %(filename)s[line:%(lineno)d] - <%(threadName)s %(thread)d>' +
	'- <Process %(process)d> - %(levelname)s: %(message)s'
)
# asctime:日志产生的时间;filename:产生日志的脚本文件名;lineno:该脚本文件哪一行代码产生了日志
# threadName: 当前线程名;thread: 当前进程名;Process进程同thread线程
# levelname: logger的级别;meesage: 具体的日志信息


# 创建Handler, 输出日志到控制台和文件
# 日志文件FileHandler
basedir = os.path.abspath(".") #返回脚本所在的绝对路径
log_dir = os.path.join(basedir, 'logs')  # 日志文件所在目录,即‘脚本路径/logs'
if not os.path.isdir(log_dir):
	os.mkdir(log_dir)
filename = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) + '.log'  # 日志文件名,以当前时间命名
file_handler = logging.FileHandler(os.path.join(log_dir, filename))  # 创建日志文件handler
file_handler.setFormatter(formatter)  # 设置Formatter
file_handler.setLevel(logging.INFO)  # 单独设置日志文件的日志级别

# 控制台日志StreamHandler
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
# stream_handler.setLevel(logging.INFO)  # 单独设置控制台日志的日志级别,注释掉则使用总日志级别

# 将handler添加到logger中

logger.addHandler(file_handler)
logger.addHandler(stream_handler)

到此这篇关于python实现自定义日志的具体方法的文章就介绍到这了,更多相关python自定义日志如何实现内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python虚拟环境的安装配置图文教程
Oct 20 Python
Python装饰器用法实例总结
May 26 Python
python操作kafka实践的示例代码
Jun 19 Python
Python安装selenium包详细过程
Jul 23 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
基于python实现模拟数据结构模型
Jun 12 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
You might like
解析数组非数字键名引号的必要性
2013/08/09 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
php实现异步数据调用的方法
2015/12/24 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
python中__slots__用法实例
2015/06/04 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
django如何实现视图重定向
2019/07/24 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python 怎样进行内存管理
2020/11/10 Python
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
创建绿色社区汇报材料
2014/08/22 职场文书
购房个人委托书范本
2014/10/11 职场文书
大学生学期个人总结
2015/02/12 职场文书
河童之夏观后感
2015/06/11 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers