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编写朴素贝叶斯用于文本分类
Dec 21 Python
python中abs&amp;map&amp;reduce简介
Feb 20 Python
python中的常量和变量代码详解
Jul 25 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
如何使用Python 打印各种三角形
Jun 28 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
linux中如何使用python3获取ip地址
Jul 15 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python梯度下降算法的实现
Feb 24 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
keras中的History对象用法
Jun 19 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
You might like
PHP使用数组实现队列
2012/02/05 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
做网页的一些技巧
2007/02/01 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
浅谈vue加载优化策略
2019/03/19 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
小学生新学期寄语
2014/01/19 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
网络编辑职责
2014/03/01 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript