将日志写进json文件,并可以查询
时间: 2024-01-08 07:02:02 浏览: 33
要将日志写入 JSON 文件,并支持查询,我建议使用第三方 Python 包 `loguru`。这个包提供了非常方便的日志记录和查询功能。下面是一个简单的例子:
```python
from loguru import logger
from flask import Flask, request
app = Flask(__name__)
# 配置日志记录
logger.add('logs/{time}.json', rotation='500 MB', serialize=True)
@app.route('/', methods=['GET', 'POST'])
def index():
logger.info('请求方法:{},请求路径:{}'.format(request.method, request.path))
return 'Hello, World!'
if __name__ == '__main__':
app.run()
```
在上面的例子中,我们使用 `loguru` 的 `logger` 对象来记录日志。我们将日志记录到 `logs` 目录下的 JSON 文件中,每个文件最大为 500MB。我们还将 `serialize` 参数设置为 `True`,以便支持查询。
当你运行这个 Flask 应用时,你会在 `logs` 目录下看到类似下面的 JSON 文件:
```
{
"time": "2021-05-28T01:34:18.623285+08:00",
"level": "INFO",
"message": "请求方法:GET,请求路径:/"
}
```
你可以使用 `loguru` 提供的查询 API 来查询日志。例如,要查询所有 `level` 为 `INFO` 的日志,可以这样做:
```python
from loguru import logger
logs = logger.parse('logs/*.json')
info_logs = logs.filter(level='INFO')
for log in info_logs:
print(log['message'])
```
这会输出所有 `level` 为 `INFO` 的日志记录的 `message` 字段。你可以根据需要调整查询条件和输出内容。
需要注意的是,`loguru` 的查询 API 是基于 Python 生成器实现的,如果你的日志文件很大,可能需要花费一定的时间来加载和解析日志。如果你需要更高级的日志记录和查询功能,你可以考虑使用其他第三方包,例如 `Elasticsearch` 或 `Logstash`。