如何使用日志记录模块持续更新不包括 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'
}
}
}
我是日志模块的新手。我想知道如何持续更新日志文件,不包括像 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'
}
}
}