【发布时间】:2019-10-10 09:18:55
【问题描述】:
我正在尝试为在 GAE 上作为 App Engine 服务托管的 django 应用设置日志记录。
我已成功设置日志记录,但日志记录显示在整个项目的全局日志中,而不是该服务的日志中。我希望日志只显示在特定的服务日志中
这是我的 django 日志配置:
from google.cloud import logging as google_cloud_logging
log_client = google_cloud_logging.Client()
log_client.setup_logging()
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'stackdriver_logging': {
'class': 'google.cloud.logging.handlers.CloudLoggingHandler',
'client': log_client
},
},
'loggers': {
'': {
'handlers': ['stackdriver_logging'],
'level': 'INFO',
}
},
}
我可以通过这样的调用成功登录到全局项目日志:
def fetch_orders(request):
logger.error('test error')
logger.critical('test critical')
logger.warning('test warning')
logger.info('test info')
return redirect('dashboard')
我想知道是否可以将记录器配置为始终将日志用于正在运行的服务。
编辑:
我尝试了下面的建议,但是现在它返回以下错误:
Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/google/cloud/logging/handlers/transports/background_thread.py", line 122, in _safely_commit_batch
batch.commit()
File "/env/lib/python3.7/site-packages/google/cloud/logging/logger.py", line 381, in commit
entries = [entry.to_api_repr() for entry in self.entries]
File "/env/lib/python3.7/site-packages/google/cloud/logging/logger.py", line 381, in <listcomp>
entries = [entry.to_api_repr() for entry in self.entries]
File "/env/lib/python3.7/site-packages/google/cloud/logging/entries.py", line 318, in to_api_repr
info = super(StructEntry, self).to_api_repr()
File "/env/lib/python3.7/site-packages/google/cloud/logging/entries.py", line 241, in to_api_repr
info["resource"] = self.resource._to_dict()
AttributeError: 'ConvertingDict' object has no attribute '_to_dict'
我可以在包源代码中覆盖它以使其工作,但是 GAE 环境要求我使用 google 提供的包来进行云日志记录。有什么办法可以从这里出发吗?
【问题讨论】:
标签: django google-app-engine logging stackdriver