问题描述
我正在使用 loguru 包登录我的 python 项目。
https://github.com/Delgan/loguru
我希望覆盖默认格式,以便我可以为模块/函数/行号字符串指定一个固定的。
这是默认格式...
'<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>'
输出是这样的......
2020-12-28 14:36:27.510 | INFO | package1.module1:function:132 - Listing Users...
2020-12-28 14:36:27.601 | ERROR | package10.module10:function10:1000 - The provided token has expired
我想向包/模块/函数添加静态宽度/填充,这样输出看起来像......
2020-12-28 14:36:27.510 | INFO | package1.module1:function:132 - Listing Users...
2020-12-28 14:36:27.601 | ERROR | package10.module10:function10:1000 - The provided token has expired
问题是带有函数行号的完整路径是由 3 个变量构成的...
<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan>
有什么办法可以指定字符串组合的宽度吗?像……
<cyan>{name + ":" + function + ":" + line : 45}</cyan>
感谢您的帮助!
解决方法
你总是可以限制字符串长度,就像你对任何 ->filter()
所做的一样:
sequence
输出:
# 150 chars string:
x = "abc" * 50
# 30 chars string:
y = "xyz" * 10
# predefined display limit:
n = 45
spaces = " " * n
print(f"{(x+spaces)[:n]} end line")
print(f"{(y+spaces)[:n]} end line")
print(f"{(y+x+spaces)[:n]} end line")