- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已安装 django-structlog 1.4.1对于我的 Django 项目。我已按照该链接中描述的所有步骤进行操作。
在我的 设置.py 文件:
import structlog
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_structlog.middlewares.RequestMiddleware',
]
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"json_formatter": {
"()": structlog.stdlib.ProcessorFormatter,
"processor": structlog.processors.JSONRenderer(),
},
"plain_console": {
"()": structlog.stdlib.ProcessorFormatter,
"processor": structlog.dev.ConsoleRenderer(),
},
"key_value": {
"()": structlog.stdlib.ProcessorFormatter,
"processor": structlog.processors.KeyValueRenderer(key_order=['timestamp', 'level', 'event', 'logger']),
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "plain_console",
},
"json_file": {
"class": "logging.handlers.WatchedFileHandler",
"filename": "log/json.log",
"formatter": "json_formatter",
},
"flat_line_file": {
"class": "logging.handlers.WatchedFileHandler",
"filename": "log/flat_line.log",
"formatter": "key_value",
},
},
"loggers": {
"django_structlog": {
"handlers": ["console", "flat_line_file", "json_file"],
"level": "DEBUG",
},
"django_structlog_demo_project": {
"handlers": ["console", "flat_line_file", "json_file"],
"level": "DEBUG",
},
}
}
structlog.configure(
processors=[
structlog.stdlib.filter_by_level,
structlog.processors.TimeStamper(fmt="iso"),
structlog.stdlib.add_logger_name,
structlog.stdlib.add_log_level,
structlog.stdlib.PositionalArgumentsFormatter(),
structlog.processors.StackInfoRenderer(),
structlog.processors.format_exc_info,
structlog.processors.UnicodeDecoder(),
structlog.processors.ExceptionPrettyPrinter(),
structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
],
context_class=structlog.threadlocal.wrap_dict(dict),
logger_factory=structlog.stdlib.LoggerFactory(),
wrapper_class=structlog.stdlib.BoundLogger,
cache_logger_on_first_use=True,
)
from django.http.response import HttpResponse
import structlog
logger = structlog.get_logger(__name__)
def func(request):
logger.debug("debug message", bar="Buz")
logger.info("info message", bar="Buz")
logger.warning("warning message", bar="Buz")
logger.error("error message", bar="Buz")
logger.critical("critical message", bar="Buz")
return HttpResponse('success')
{"request_id": "7903fdfb-e99a-4360-a8f0-769696520cc9", "user_id": null, "ip": "127.0.0.1", "request": "<WSGIRequest: GET '/test'>", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36", "event": "request_started", "timestamp": "2020-02-12T05:11:23.877111Z", "logger": "django_structlog.middlewares.request", "level": "info"}
{"request_id": "7903fdfb-e99a-4360-a8f0-769696520cc9", "user_id": null, "ip": "127.0.0.1", "code": 200, "request": "<WSGIRequest: GET '/test'>", "event": "request_finished", "timestamp": "2020-02-12T05:11:23.879736Z", "logger": "django_structlog.middlewares.request", "level": "info"}
timestamp='2020-02-12T05:11:23.877111Z' level='info' event='request_started' logger='django_structlog.middlewares.request' request_id='7903fdfb-e99a-4360-a8f0-769696520cc9' user_id=None ip='127.0.0.1' request=<WSGIRequest: GET '/test'> user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
timestamp='2020-02-12T05:11:23.879736Z' level='info' event='request_finished' logger='django_structlog.middlewares.request' request_id='7903fdfb-e99a-4360-a8f0-769696520cc9' user_id=None ip='127.0.0.1' code=200 request=<WSGIRequest: GET '/test'>
2020-02-12T05:11:23.877111Z [info ] request_started [django_structlog.middlewares.request] ip=127.0.0.1 request=<WSGIRequest: GET '/test'> request_id=7903fdfb-e99a-4360-a8f0-769696520cc9 user_agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36 user_id=None
{'request_id': '7903fdfb-e99a-4360-a8f0-769696520cc9', 'user_id': None, 'ip': '127.0.0.1', 'bar': 'Buz', 'event': 'warning message', 'timestamp': '2020-02-12T05:11:23.879035Z', 'logger': 'operational.views.core_view', 'level': 'warning'}
{'request_id': '7903fdfb-e99a-4360-a8f0-769696520cc9', 'user_id': None, 'ip': '127.0.0.1', 'bar': 'Buz', 'event': 'error message', 'timestamp': '2020-02-12T05:11:23.879292Z', 'logger': 'operational.views.core_view', 'level': 'error'}
{'request_id': '7903fdfb-e99a-4360-a8f0-769696520cc9', 'user_id': None, 'ip': '127.0.0.1', 'bar': 'Buz', 'event': 'critical message', 'timestamp': '2020-02-12T05:11:23.879468Z', 'logger': 'operational.views.core_view', 'level': 'critical'}
2020-02-12T05:11:23.879736Z [info ] request_finished [django_structlog.middlewares.request] code=200 ip=127.0.0.1 request=<WSGIRequest: GET '/test'> request_id=7903fdfb-e99a-4360-a8f0-769696520cc9 user_id=None
[12/Feb/2020 05:11:23] "GET /test HTTP/1.1" 200 7
最佳答案
我没用过 django-structlog
(但写成 structlog
🤓)这看起来像 django_structlog_demo_project
不是应用程序记录器的名称,因此设置不适用(默认日志级别为 INFO
)。
您可以修复名称或由于您的配置相同,我建议删除示例记录器并将第一个重命名为 root
这应该具有全局影响。
遗憾的是,这是标准库 logging
的一个非常常见的问题。 .
关于python - Django Structlog 未将日志消息打印或写入控制台或文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60182065/
使用 python 标准日志记录模块,可以使用以下命令添加原始日志调用的行号:%(lineno)s. 这如何使用 structlog 来完成? 最佳答案 我有类似的需求,我最终创建了一个 custom
我正在尝试将日志的额外字段添加为键值,同时继续使用标准日志记录库和 structlog ProcessorFormatter。 这是一个例子: 如果我们使用 JsonFormatter,额外的字段将作
我正在尝试设置 structlog 并设置日志级别。我的代码如下所示: import structlog import logging filepath=open("out.log",'a') log
我已安装 django-structlog 1.4.1对于我的 Django 项目。我已按照该链接中描述的所有步骤进行操作。 在我的 设置.py 文件: import structlog MIDDLE
我如何配置structlog,以便包括上述info在内的所有消息都将使用KeyValueRenderer发送到stdout而所有日志记录也会使用JSONRenderer写入文件? 注意:我只想使用st
我正在尝试使用 Structlog 来记录到一个文件,然后使用 filebeat 将日志发送到我的日志记录服务。 我已经使一切正常,但我希望能够在多个模块中使用相同的记录器,就像使用 Python 的
有人用structlog吗?与 Django ?我正在寻找一个代码示例,如何集成 Django 日志记录(通过标准库完成)和 structlog。 我已经尝试过 "Rendering Using st
我正在使用Python Structlog。一切都记录为 event='Something Happened' 我不需要该事件关键字,我只想记录事件数据: 'Something happened' 如
我目前正在尝试摆脱 print() 的束缚,并开始使用 ELK 堆栈和 structlog 模块进行集中式日志收集来生成结构化 json 日志行。对于我自己使用loggingHelper模块编写的模块
我是一名优秀的程序员,十分优秀!