导入日志管理模块
from loguru import logger
创建log文件
time_day = datetime.datetime.now().strftime('%Y-%m-%d')
logger.add('%s_log_message.log' % str(time_day), retention="1 days") # 生成log文件, retention为过期时间
使用方法一(装饰器)
@app.route('/', methods=['POST'])
@logger.catch # catch可以传入参数,如message="自定义字符串", 详情请查看源码
def hello():
name = request.form.get('name')
logger.info('调用接口main/hello, url: "/", 请求参数为:{name: %s}' % name)
print(1 / 0) # 这里报错
logger.info('-----调用接口main/hello成功-----\n')
return 'ok'
---------------------
正常执行的log信息:
2022-06-06 11:57:32.057 | INFO | __main__:hello_world:24 - 调用接口main/hello_world, url: "/hello", 请求参数为:{name: 法外狂徒张三}
2022-06-06 11:57:32.061 | INFO | __main__:hello_world:25 - -----调用接口main/hello_world成功-----
---------------------
报错信息:
2022-06-06 11:57:47.142 | INFO | __main__:hello:15 - 调用接口main/hello, url: "/", 请求参数为:{name: 芜湖大司马}
2022-06-06 11:57:47.145 | ERROR | flask.app:dispatch_request:1936 - An error has been caught in function 'dispatch_request', process 'MainProcess' (7756), thread 'Thread-3' (4564):
Traceback (most recent call last):
File "E:\Python37\lib\threading.py", line 890, in _bootstrap
self._bootstrap_inner()
│ └ <bound method Thread._bootstrap_inner of <Thread(Thread-3, started daemon 4564)>>
└ <Thread(Thread-3, started daemon 4564)>
..... 省略
ZeroDivisionError: division by zero
使用方法二(try)
def my_function1():
try:
return 1 / 0
except ZeroDivisionError:
logger.exception("What?!")
my_function1()
----------------------
报错信息:
2022-06-06 12:20:29.329 | ERROR | __main__:my_function1:13 - What?!
Traceback (most recent call last):
File "C:/Users/asus/PycharmProjects/pythonProject1\test.py", line 15, in <module>
my_function1()
└ <function my_function1 at 0x000001ED8AACD4C8>
> File "C:/Users/asus/PycharmProjects/pythonProject1\test.py", line 11, in my_function1
return 1 / 0
ZeroDivisionError: division by zero