一、loguru的使用
Loguru 一个能彻底解放你的日志记录器。
它即插即用,具备多种方式滚动日志、自动压缩日志文件、定时删除等功能。
除此之外,多线程安全、高亮日志、日志告警等功能也不在话下。
下面就给大家介绍一下这个强大工具的基本使用方法。
Loguru 安装方式很简单,打开终端输入:pip install loguru
import os
import sys
from loguru import logger
import config.BaseConfig as BaseConfig
class LogUtils:
def __new__(cls, *args, **kwargs):
# 解决重复打印
logger.remove()
logger.add(sys.stderr, level="INFO")
logFilepath = BaseConfig.baseFilepath + "/logs"
# 判断目录是否存在,不存在则创建新的目录
if not os.path.isdir(logFilepath):
os.makedirs(logFilepath)
logger.add(
logFilepath + "/{time:YYYY-MM-DD}.log", # 指定文件
format="{time:YYYY-MM-DD HH:mm:ss:SSS} | {level} | Process:{process.name}:{process.id} "
"| Thread:{thread.name}:{thread.id} | {file.path}:{line} | {message}",
encoding="utf-8",
rotation="00:00", # 按天分割
# serialize=True, # 将记录的消息转化成JSON字符串
backtrace=True, # 回溯
diagnose=True, # 诊断
enqueue=True, # 异步写入
)
return logger
二、logging的使用
logging是Python自带的日志模块,主要有以下几个部分:
-
记录器暴露了应用程序代码直接使用的接口。
-
处理器将日志记录(由记录器创建)发送到适当的目标。
-
过滤器提供了更细粒度的功能,用于确定要输出的日志记录。
-
格式器指定最终输出中日志记录的样式。
日志级别
级别 | 数值 |
---|---|
| 50 |
| 40 |
| 30 |
| 20 |
| 10 |
| 0 |
记录器
setLevel(level)
给记录器设置阈值为 level 。日志等级小于 level 会被忽略。严重性为 level 或更高的日志消息将由该记录器的任何一个或多个处理器发出,除非将处理器的级别设置为比 level 更高的级别。
创建记录器时,级别默认设置为 NOTSET。
addHandler(hdlr) 将指定的处理器 hdlr 添加到此记录器。
addFilter(filter) 将指定的过滤器 filter 添加到此记录器。
debug(msg, *args, **kwargs) 在此记录器上记录 DEBUG 级别的消息。
info(msg, *args, **kwargs) 在此记录器上记录 INFO 级别的消息。
warning(msg, *args, **kwargs) 在此记录器上记录 WARNING 级别的消息。
error(msg, *args, **kwargs) 在此记录器上记录 ERROR 级别的消息。
critical(msg, *args, **kwargs) 在此记录器上记录 CRITICAL 级别的消息。
log(level, msg, *args, **kwargs) 在此记录器上记录 level 整数代表的级别的消息。
处理器
StreamHandler
它可将日志记录输出发送到数据流例如 sys.stdout, sys.stderr 或任何文件类对象(或者更精确地说,任何支持 write()
和 flush()
方法的对象)。
FileHandler
它可将日志记录输出到磁盘文件中。
格式器
Formatter
(fmt=None, datefmt=None, style='%', validate=True, *, defaults=None)
import logging
logging.basicConfig(
filename='app.log', #配置文件路径,输出日志保存到文件
level=logging.DEBUG, #设置日志输出等级
format='%(asctime)s:%(levelname)s:%(message)s') #自定义日志格式
logger = logging.getLogger('peewee')
logger.addHandler(logging.StreamHandler())
日志加颜色 pip install termcolor
from termcolor import colored
import logging
logging.basicConfig(format="[%(asctime)s] >>> %(levelname)s %(name)s: %(message)s", level=logging.INFO)
self.loger = logging.getLogger(f'DarkNet_ChineseTradingNetwork')
self.info = lambda txt: self.loger.info(colored(txt, 'blue'))
self.report = lambda txt: self.loger.info(colored(txt, 'green'))
self.warn = lambda txt: self.loger.info(colored(txt, 'yellow'))
self.error = lambda txt: self.loger.info(colored(txt, 'red'))