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内置函数的用法实例教程
Sep 08 Python
Python转换HTML到Text纯文本的方法
Jan 15 Python
Python中用Spark模块的使用教程
Apr 13 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
简单学习Python time模块
Apr 29 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
Python学习之包与模块详解
Mar 19 Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
You might like
给多个地址发邮件的类
2006/10/09 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
javascript中的this详解
2014/12/08 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
Vue自定义指令详解
2017/07/28 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
介绍Python中的__future__模块
2015/04/27 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
Python实现八皇后问题示例代码
2018/12/09 Python
django框架使用方法详解
2019/07/18 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
三个儿子教学反思
2014/02/03 职场文书
挂科检讨书范文
2014/02/20 职场文书
教师党员公开承诺书
2014/03/25 职场文书
美容院店长岗位职责
2014/04/08 职场文书
代理协议书
2014/04/22 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
基层党支部整改方案
2014/10/25 职场文书
小学班主任自我评价
2015/03/11 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技