如何在uwsgi中创建单个日志文件?

问题描述 投票:0回答:1

我正在为 Django 应用程序使用下面的 uwsgi 日志配置文件。它创建两个日志文件:

  1. access_log-2023-10-13.log
  2. app_log-2023-10-13.log

现在我想再创建一个名为 all_logs-2023-10-13.log 的日志文件,其中包含

access + app
日志文件数据。有什么办法可以创建这个吗?

[uwsgi]
master = true
http-socket = xyz_port
memory-report = true
module = demo_app.wsgi
...
...
...

log-date = %%d/%%m/%%Y %%H:%%M:%%S %%Z
logformat-strftime = true
logger = stdio
log-format = %(addr) - %(user) [%(ftime)] "%(method) %(uri) %(proto)" %(status) %(size) %(referer) %(uagent) %(pid)
req-logger = file:/var/log/demo_app/access_log-@(exec://date +%%Y-%%m-%%d).log
logger = file:/var/log/demo_app/app_log-@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
django logging uwsgi
1个回答
0
投票

uWSGI 文档概述了

--log-route
的使用,用于将基于正则表达式的日志消息定向到不同的目的地。
但是,它没有提供直接方法将不同来源的日志合并到单个文件中。

您需要创建一个简单的脚本来合并日志文件,可以安排每天运行该脚本以将

access_log
app_log
合并到
all_logs

类似:

import datetime

def merge_logs():
    date_suffix = datetime.datetime.now().strftime('%Y-%m-%d')
    with open(f'/var/log/demo_app/access_log-{date_suffix}.log', 'r') as access_log, \
         open(f'/var/log/demo_app/app_log-{date_suffix}.log', 'r') as app_log, \
         open(f'/var/log/demo_app/all_logs-{date_suffix}.log', 'a') as all_logs:
        for line in access_log:
            all_logs.write(line)
        for line in app_log:
            all_logs.write(line)

if __name__ == "__main__":
    merge_logs()
© www.soinside.com 2019 - 2024. All rights reserved.