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开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
使用Python写CUDA程序的方法
Mar 27 Python
对Python3中的input函数详解
Apr 22 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
python实现雨滴下落到地面效果
Jun 21 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python如何实现远程方法调用
Aug 07 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
You might like
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
Javascript 读后台cookie代码
2008/09/15 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
js函数排序的实例代码
2013/07/01 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
员工工作表扬信范文
2014/01/13 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
浅析python中特殊文件和特殊函数
2022/02/24 Python
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers