Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用日志模块持续更新日志文件,不包括django服务器控制台的响应消息?_Django_Python 3.x_Django Logging - Fatal编程技术网

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

如何使用日志模块持续更新日志文件,不包括django服务器控制台的响应消息?,django,python-3.x,django-logging,Django,Python 3.x,Django Logging,我不熟悉日志模块。我想知道如何持续更新日志文件,不包括响应消息,如2018-06-07 11:33:22330 | INFO | POST/MyProject/HTTP/1.120036 我正在django更新日志,就像 import logging log = logging.getLogger('django') log.error("Internal Error: X happened.") 我想完成两项任务: 1.处理请求后立即更新日志文件。 2.在日志文件中,我不想添加POST/My

我不熟悉日志模块。我想知道如何持续更新日志文件,不包括响应消息,如2018-06-07 11:33:22330 | INFO | POST/MyProject/HTTP/1.120036

我正在django更新日志,就像

import logging
log = logging.getLogger('django')
log.error("Internal Error: X happened.")
我想完成两项任务: 1.处理请求后立即更新日志文件。 2.在日志文件中,我不想添加POST/MyProject/HTTP/1.120036之类的消息


在设置中,其中是“级别”:“调试”将其更改为“级别”:“错误”


应该多解释

编写一个自定义日志筛选脚本,该脚本将筛选出所需的内容,并将其添加到日志设置中

按照以下链接将自定义过滤器添加到django settings.py

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

#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'
    }
  }
}

谢谢ddg。但它正在阻止所有信息消息。我想记录除POST/MyProject/HTTP/1.120036之外的所有信息消息。对不起,我看不到一个简单的方法来改变这种行为。也许可以写一个脚本来检查你的日志,然后删除这些消息?谢谢,我终于找到了解决方案。我需要做记录。名字=自定义筛选方法中的server.django。
#bar.py

import logging

class InfoFilter(logging.Filter):
    def filter(self, record):
        return record.levelno == logging.INFO
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'
    }
  }
}