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读取word文档的方法
May 09 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python 爬虫图片简单实现
Jun 01 Python
python机器学习之决策树分类详解
Dec 20 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
python切片及sys.argv[]用法详解
May 25 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python线程定时器Timer实现原理解析
Nov 30 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Python的历史与优缺点整理
May 26 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
python数字图像处理之图像的批量处理
Jun 28 Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
You might like
php中防止伪造跨站请求的小招式
2011/09/02 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
php 保留字列表
2012/10/04 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
浅谈Python中函数的参数传递
2016/06/21 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python列表切片操作实例总结
2019/02/19 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
Django中create和save方法的不同
2019/08/13 Python
python中web框架的自定义创建
2019/09/08 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
一份Java笔试题
2012/02/21 面试题
2014年教师业务学习材料
2014/05/12 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
万里长城导游词
2015/01/30 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
php去除deprecated的实例方法
2021/11/17 PHP
Go语言读取txt文档的操作方法
2022/01/22 Golang
Python简易开发之制作计算器
2022/04/28 Python