pip install loguru
from logrur import logger
logger.debug('Hello logger')
# 2020-11-09 17:11:25.015 | DEBUG | __main__:<module>:1 - Hello loguru.
from loguru import logger
logger.add("file.log", # 日志输出到指定文件
format="{time} {level} {message}", # 配置格式
filter="", # 过滤器
level="INFO" # 过滤级别
)
logger.info("这是一条info日志")
# 2019-03-14T20:01:25.392454+0800 INFO 这是一条info日志
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
logger.add("file_1.log", rotation="500 MB") # 文件过大就会重新生成一个文件
logger.add("file_2.log", rotation="12:00") # 每天12点创建新文件
logger.add("file_3.log", rotation="1 week") # 文件时间过长就会创建新文件
logger.add("file_X.log", retention="10 days") # 一段时间后会清空
logger.add("file_Y.log", compression="zip") # 保存zip格式
logger.add("somefile.log", enqueue=True) # 异步写入
logger.add("somefile.log", serialize=True) # 序列化为json
为了使用方便,自定义二次封装logrur
import os
import datetime
from loguru import logger
class Logings:
__instance = None
# 文件名称,按天创建
DATE = datetime.datetime.now().strftime('%Y-%m-%d')
# 项目路径下创建log目录保存日志文件
logpath = os.path.join(os.path.dirname(os.getcwd()), "logs") # 拼接指定路径
# 判断目录是否存在,不存在则创建新的目录
if not os.path.isdir(logpath): os.makedirs(logpath)
logger.add('%s\%s.log' % (logpath, DATE), # 指定文件
format="{time:YYYY-MM-DD HH:mm:ss} | {level}> {elapsed} | {message}",
encoding='utf-8',
retention='1 days', # 设置历史保留时长
backtrace=True, # 回溯
diagnose=True, # 诊断
enqueue=True, # 异步写入
# rotation="5kb", # 切割,设置文件大小,rotation="12:00",rotation="1 week"
# filter="my_module" # 过滤模块
# compression="zip" # 文件压缩
)
def __new__(cls, *args, **kwargs):
if not cls.__instance:
cls.__instance = super(Logings, cls).__new__(cls, *args, **kwargs)
return cls.__instance
def info(self, msg, *args, **kwargs):
return logger.info(msg, *args, **kwargs)
def debug(self, msg, *args, **kwargs):
return logger.debug(msg, *args, **kwargs)
def warning(self, msg, *args, **kwargs):
return logger.warning(msg, *args, **kwargs)
def error(self, msg, *args, **kwargs):
return logger.error(msg, *args, **kwargs)
def exception(self, msg, *args, exc_info=True, **kwargs):
return logger.exception(msg, *args, exc_info=True, **kwargs)
if __name__ == '__main__':
logs = Logings()
def func(a, b):
return a/b
def my(z, c):
try:
func(z,c)
except ZeroDivisionError:
logs.exception('...........')
my(5,0)