0

我是日志模块的新手。我想知道如何不断更新日志文件,不包括响应消息,如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
4

2 回答 2

1

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

按照以下链接将自定义过滤器添加到您的 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'
    }
  }
}
于 2018-06-07T07:58:37.580 回答
0

在设置中, where is 'level': 'DEBUG'say 将其更改为 say 'level': 'ERROR'

这个页面应该解释更多。

于 2018-06-07T07:02:32.013 回答