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 获取 Linux 系统信息的代码
Jul 13 Python
详解Python中的条件判断语句
May 14 Python
python中zip()方法应用实例分析
Apr 16 Python
python将unicode转为str的方法
Jun 21 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
python对验证码降噪的实现示例代码
Nov 12 Python
Python计算机视觉里的IOU计算实例
Jan 17 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 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/05/29 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
header导出Excel应用示例
2014/01/24 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
python根据京东商品url获取产品价格
2015/08/09 Python
python 把列表转化为字符串的方法
2018/10/23 Python
python pandas库的安装和创建
2019/01/10 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
如何在python中判断变量的类型
2020/07/29 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
家长反馈意见及建议
2015/06/03 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS