習(xí)慣了使用Python自帶的
logging
模塊記錄日志与柑,但是總覺得不夠優(yōu)雅庇谆。
Loguru解決了這個(gè)問題忌锯。guru是印度語中大師的意思幔翰,直譯就是“日志大師”漩氨。
使用pip安裝
pip install loguru
開箱即用
不同的日志等級(jí),輸出效果也不一樣(等級(jí)由低到高是DEBUG
遗增、INFO
叫惊、WARNING
、ERROR
做修、CRITICAL
)
logger.debug("That's it, beautiful and simple logging!")
logger.info("That's it, beautiful and simple logging!")
logger.warning("That's it, beautiful and simple logging!")
logger.error("That's it, beautiful and simple logging!")
logger.critical("That's it, beautiful and simple logging!")
統(tǒng)一的add()
函數(shù)
add()
函數(shù)用于注冊“沉量”sink
霍狰,用于管理日志消息。
logger.add(sink='log.txt', format="{time} {level} {message}", filter="my_module", level="INFO")
將上面兩個(gè)功能合起來饰及,就能實(shí)現(xiàn)最基本的日志功能了蔗坯。
from loguru import logger
logger.add(sink='log.log', format="{time} - {level} - {message}", level="INFO")
logger.info("That's it, beautiful and simple logging!")
可以用rotation
、retention
燎含、compression
進(jìn)行日志窗口宾濒、更新、壓縮管理屏箍。
logger.add("file_1.log", rotation="500 MB") # 日志文件的窗口大小是500M
logger.add("file_2.log", rotation="12:00") # 每天中午12點(diǎn)創(chuàng)建新日志文件
logger.add("file_3.log", rotation="1 week") # 自動(dòng)更新舊文件
logger.add("file_X.log", retention="10 days") # 清理舊文件
logger.add("file_Y.log", compression="zip") # 壓縮文件
loguru支持f-string
:
logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")
Loguru支持在主進(jìn)程和線程中捕獲異常绘梦,使用@logger.catch
from loguru import logger
logger.add(sink='log.log', format="{time} - {level} - {message}", level="INFO")
@logger.catch
def my_function(x, y, z):
return 1 / (x + y + z)
res = my_function(0,0,0)
print(res)
修改日志文字的顏色
logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
使用enqueue
橘忱,可以保證多線程安全、多進(jìn)程安全
logger.add("somefile.log", enqueue=True)
詳細(xì)的異承斗睿回溯
使用backtrace
钝诚、diagnose
from loguru import logger
logger.add("output.log", backtrace=True, diagnose=True) # 設(shè)置為'False'可以保證生產(chǎn)中不泄露信息
def func(a, b):
return a / b
def nested(c):
try:
func(5, c)
except ZeroDivisionError:
logger.exception("What?!")
nested(0)
修改時(shí)間格式
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")
參考:
https://github.com/Delgan/loguru
https://loguru.readthedocs.io/en/stable/overview.html