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

  1. 访问日志(log)-2023-10-13.log
  2. APP_LOG-2023-10-13.log

现在,我想再创建一个名为all_logs-2023-10-13.log的日志(log)文件,其中包含两个access + app个日志(log)文件数据.有没有办法创造出这样的东西?

[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

推荐答案

The uWSGI documentation outlines the use of --log-route for directing log messages based on regular expressions to different destinations.
However, it does not provide a direct method to combine logs from different sources into a single file.

您需要创建一个简单的脚本来合并日志(log)文件,该脚本可以计划为每天运行以将access_logapp_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()

但我的日志(log)文件每天都在使用日志(log)轮换进行压缩.那么,为ALL_LOGS创建手动脚本是不是一个好主意?

然后脚本可以每天安排before次日志(log)旋转/压缩,以便每天产生all_logs.20xxMMJJ次.

Django相关问答推荐

测试DRF中需要授权头

我希望用户能够预订相同的桌子,但不是在同一时间

Django mods.py我想要一个函数转到一个变量

Django和静态文件

Django为什么我的post.count_view递增2?

如何在Django模板中有条件地传递值给with变量?

有没有办法在Django中按需/点击仅获取和序列化一部分数据以提高性能?

Django ModelForm提交按钮不起作用

如何将表单中的用户字段设置为当前登录的用户?

django - 让用户登录到测试客户端

我的 django 模板布尔变量在 javascript 中没有按预期工作

如何在 PyCharm 中重命名 Django 元素?

Django中的左外反向select_related?

如何验证对象是否存在于多线程中

Django:如何编写查询以使用多列进行排序,通过模板显示

如何查询名称包含python列表中任何单词的模型?

获取 django 应用的绝对路径

如何 suppress Django 中的弃用警告?

Django中'related_name'和'related_query_name'属性之间的区别?

Django的不区分大小写的网址?