一、logging介绍:

使用 logging.debug(text)来打印信息,info等的使用方法与debug一致,都只有一个位置参数

默认日志界别为:会输出warning以上的信息,代码示例:

import logging

logging.debug("这是一个debug的信息")
logging.info("这是一个info的信息")
logging.warning("这是一个warning的信息")
logging.error("这是一个error的信息")
logging.critical("这是一个critical的信息")

查看日志返回:

二.日志的级别:

从低到高分别是:

debug(调试)-》info(打印信息,类似print) -》waring(警告信息)-》 error(错误)-》 critical(致命)

三.日志收集器

可实现自定义打印日志

主要功能:

1.自定义一个日志收集器(getLogger函数),

可自定义名称,否则默认返回 root logger

代码:my_logger = logging.getLogger('bktest')

2.设置级别(setLevel函数)

可以设置日志的收集级别,否则默认使用wainning日志

3.指定输出渠道

ch = logging.StreamHandler()

4.设置输出级别

my_logger.setLevel('DEBUG')

5.对接,添加渠道

my_logger.addHandler(ch)

当收集日志的级别与输出日志的级别不一致时,最终输出结果是两个级别的交集,代码示例:

import logging

my_logging = logging.getLogger('bktest')#创建日志收集器
my_logging.setLevel('DEBUG')#设置日志收集级别
ch =logging.StreamHandler()#输出到控制台
my_logging.setLevel('INFO')#设置日志输出级别
my_logging.addHandler(ch)#对接,添加渠道 my_logging.debug("这是一个debug的信息")
my_logging.info("这是一个info的信息")
my_logging.warning("这是一个warning的信息")
my_logging.error("这是一个error的信息")
my_logging.critical("这是一个critical的信息")

查看输出结果:

 四.优化日志信息

常用格式化呼输出语句:

%(name)s logger(日志收集器)的名字
%(levelname)s 文本形式的日志级别
%(leveIno)s 数字形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
%(relativeCreated)d 输出日志信息时,自logger创建依赖的毫秒数
%(asctime)s 字符串形式的当前时间,默认格式是"2022-05-27 00:10:00,000"。逗号后面是毫秒
%(thread)d 线程ID,可能没有
%(threadName)s 线程名,可能没有
%(process)d 进程ID,可能没有
%(message)s 用户输出的消息

代码如下:

import logging

my_logging = logging.getLogger('bktest')#创建日志收集器
my_logging.setLevel('DEBUG')#设置日志收集级别
ch =logging.StreamHandler()#输出到控制台
my_logging.setLevel('INFO')#设置日志输出级别
my_logging.addHandler(ch)#对接,添加渠道 #指定输出的格式
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息-%(message)s')
#规定日志输出的时候按照formatter格式来打印
ch.setFormatter(formatter) my_logging.debug("这是一个debug的信息")
my_logging.info("这是一个info的信息")
my_logging.warning("这是一个warning的信息")
my_logging.error("这是一个error的信息")
my_logging.critical("这是一个critical的信息")

查看输出结果:

五、日志文件输出

import logging
import os
import time root_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
log_dir=os.path.join(root_dir,"logs")
if not os.path.exists(log_dir):
os.mkdir(log_dir) my_logging = logging.getLogger('bktest')#创建日志收集器
my_logging.setLevel('DEBUG')#设置日志收集级别
ch =logging.StreamHandler()#输出到控制台
my_logging.setLevel('INFO')#设置日志输出级别
my_logging.addHandler(ch)#对接,添加渠道 #创建文件处理器fh,log_file为日志存放的文件夹
log_file=os.path.join(log_dir,"{}_log".format(time.strftime("%Y-%m-%d",time.localtime())))
fh = logging.FileHandler(log_file,encoding="UTF-8")
my_logging.addHandler(fh)#对接,添加渠道 #指定输出的格式
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息-%(message)s')
#规定日志输出的时候按照formatter格式来打印
ch.setFormatter(formatter)
fh.setFormatter(formatter) my_logging.debug("这是一个debug的信息")
my_logging.info("这是一个info的信息")
my_logging.warning("这是一个warning的信息")
my_logging.error("这是一个error的信息")
my_logging.critical("这是一个critical的信息")

运行结果如下:

python之logging日志的更多相关文章

  1. Python 中 logging 日志模块在多进程环境下的使用

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 中 logging 日志模块在多进程环境下的使用 使用 Pytho ...

  2. 【python】logging日志模块写入中文编码错误解决办法

    一.问题: 使用python的logging模块记录日志,有时会遇到中文编码问题错误. 二.解决办法: 在logging.FileHandler(path) 中添加指定编码方式 encoding='u ...

  3. python的logging日志模块(二)

    晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message') logging.info('Thi ...

  4. python的logging日志模块(一)

    最近修改了项目里的logging相关功能,用到了Python标准库里的logging模块,在此做一些记录.主要是从官方文档和stackoverflow上查询到的一些内容. 官方文档 技术博客 基本用法 ...

  5. python(6)-logging 日志模块

    logging的日志分为5个级别分别为debug(), info(), warning(), error(), critical() 先来看一下简单的代码: logging.basicConfig(f ...

  6. python的logging日志模块

    1. 简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info mess ...

  7. Python之logging日志模块

    logging 用于便捷既然日志切线程安全的模块 vim log_test.py import logging logging.basicConfig(filename='log.log', form ...

  8. python中logging日志基本用法,和进程安全问题

    低配版 import logging logging.debug('debug message') # 调试模式 logging.info('info message') # 正常运转模式 loggi ...

  9. python - django (logging 日志配置和简单使用)

    1. settings 配置 # 配置日志 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 's ...

  10. Python:Logging日志处理

    程序中,需要添加日志来记录大量信息. import logging # 第一步:创建logger self.logger = logging.getLogger() self.logger.setLe ...

随机推荐

  1. 好家伙,这个开源项目硬生生复制了一个 ChatGPT Plus 出来

    最近有一款聊天机器人框架 Lobe Chat 火出了天际,它不仅支持多模态,支持语音会话,还有一个强大的 Function Calling 插件生态系统(可以作为 ChatGPT 插件的平替).最重要 ...

  2. 流媒体服务器ZLMediaKit与FFmpeg

    流媒体服务器ZLMediaKit与FFmpeg overview 关键字:ZLMediaKit.FFmpeg.srt.vlc 如果想快速拥有自己的流媒体服务器,那么可以使用开源项目自己搭建.开源的流媒 ...

  3. nginx-通过配置不同的虚拟主机实现,不同的uri访问不同资源

    先来一个配置 再来另外一个 这两个地址对应的域名都配置解析了,并且解析的ipv4地址是你的服务器ip,且上面配置文件中的内容都在服务器做了相应的配置,对应的路径下的资源是需要准备好的(比如网站或图片或 ...

  4. JavaFx之Ikonli图标库大全(十五)

    JavaFx之Ikonli图标库大全(十五) Ikonli给java提供了大量的图标库, 官网:https://kordamp.org/ikonli/ Ikonli 提供了可以在 Java 应用程序中 ...

  5. Java 新技术:虚拟线程使用指南(二)

    虚拟线程是在 Java 21 版本中实现的一种轻量级线程.它由 JVM 进行创建以及管理.虚拟线程和传统线程(我们称之为平台线程)之间的主要区别在于,我们可以轻松地在一个 Java 程序中运行大量.甚 ...

  6. POJ 3537 Crosses and Crosses 博弈论 SG函数 记忆化搜索

    原题链接 题意 两人在一个长为n * 1的棋盘上下棋,两人持相同棋子,如果某人下完之后,棋盘上有三个棋子相连,则此人获胜.给出n,求是否先手必胜. 思路 一开始分析成了最少取3个,最多取5个的巴什博弈 ...

  7. TextCNN和TextRNN:原理与实践

    1.TextCNN原理 CNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息. (1)一维卷积:使用不同尺寸的kernel_size来模 ...

  8. GaussDB(DWS)字符串处理函数返回错误结果集排查

    摘要:在使用字符串处理函数时,有时会出现非预期结果的场景.在排除使用问题后,应该从encoding和数据本身开始排查. 本文分享自华为云社区<GaussDB(DWS)字符串处理函数返回错误结果集 ...

  9. MRS HetuEgine的数据虚拟化实践

    摘要:华为MRS云原生数据湖平台的HetuEngine就是一款解决大数据时代跨源跨域问题的数据虚拟化引擎. 本文分享自华为云社区<基于华为云原生数据湖MRS HetuEgine的数据虚拟化实践& ...

  10. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?

    摘要:在八大项测试中,华为云 GaussDB的两款数据库都以优异的成绩通过.那么这两款数据库究竟是凭借什么获此殊荣呢? 近期,中国信通院公布了第十三批数据库产品基础能力.性能和稳定性评审结果.在本次评 ...