如何使用日志记录模块持续更新不包括 django 服务器控制台响应消息的日志文件?

how to continuously update log file excluding response message of console of django server using logging module?

我是日志模块的新手。我想知道如何持续更新日志文件,不包括像 2018-06-07 11:33:22,330|INFO|"POST /MyProject/ HTTP/1.1" 200 36.

这样的响应消息
settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(asctime)s|%(levelname)s|%(message)s'
        }
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': "logging.handlers.RotatingFileHandler",
            'formatter': 'standard',
            'filename': "C:\ProgramData\PROGRAMX\Logs\PROGRAMX_logs_%s.txt" % (datetime.today().strftime("%Y_%m_%d"))
        }
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
            'format': '%(asctime)s|%(levelname)s|%(message)s'
        }
    }
}

我正在更新 django 中的日志,

import logging
log = logging.getLogger('django')
log.error("Internal Error: X happened.")

我要完成两个任务:
1.处理请求后立即更新日志文件。
2。在日志文件中,我不想添加 "POST /MyProject/ HTTP/1.1" 200 36.

之类的消息
PROGRAMX_logs_2018_06_07.txt

2018-06-07 11:33:14,317|ERROR|Internal Error: X happened.
2018-06-07 11:33:14,319|INFO|"POST /MyProject/ HTTP/1.1" 200 36
2018-06-07 11:33:22,327|ERROR|Internal Error: X happened.
2018-06-07 11:33:22,330|INFO|"POST /MyProject/ HTTP/1.1" 200 36

在设置中,'level': 'DEBUG' 更改为 'level': 'ERROR'

This page应该多解释一下。

编写一个自定义日志记录过滤器脚本,它将过滤掉您需要的任何内容并将其添加到您的日志记录设置中。

按照以下 link 将自定义过滤器添加到您的 django settings.py

https://docs.djangoproject.com/en/2.0/topics/logging/#examples

下面的脚本只允许记录 INFO 级别的消息。

#bar.py

import logging

class InfoFilter(logging.Filter):
    def filter(self, record):
        return record.levelno == logging.INFO

您还可以使用 record.name 根据您的需要进一步过滤。

您需要将过滤器添加到您的设置中:

settings.py

LOGGING={
  'version': 1,
  'disable_existing_loggers': False,
  'formatters': {
    'standard': {
      'format': '%(asctime)s|%(levelname)s|%(message)s'
    }
  },
  'filters': {
    'special': {
      '()': 'Foo.bar',       
     }
   },
  'handlers': {
    'file': {
      'level': 'DEBUG',
      'class': "logging.handlers.RotatingFileHandler",
      'formatter': 'standard',
      'filters': ['special'],
      'filename': "C:\ProgramData\PROGRAMX\Logs\PROGRAMX_logs_%s.txt"%(datetime.today().strftime("%Y_%m_%d"))
    }
  },
  'loggers': {
    'django': {
      'handlers': [
        'file'
      ],
      'level': 'DEBUG',
      'propagate': True,
      'format': '%(asctime)s|%(levelname)s|%(message)s'
    }
  }
}