D
Size: a a a
D
NC
LO
VS
YS
AK
cursor.execute(f'CREATE ROLE "{user_id}"')
AK
DT
gelf
формате в логстеш пишет логи (прокидывая всякие extra
поля, которые я сую в реквест, типо request_id
с nginx-a, откуда лог прилетает (апи, вебсокет, админка, статика еще что-то)).pygelf
использую, чтобы логмесседж в красивый json формировался и индексы в elk норм работалиDT
LOGGING = {Конфиг примерно вот такой
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'simple': {
'format': '%(message)s'
},
},
'filters': {
'static_fields': {
'()': 'my_app.utils.StaticFieldLoggingFilter',
},
'request_id': {
'()': 'my_app.filters.RequestIDFilter'
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'logstash': {
'class': 'my_app.utils.CustomGelfHandler',
'host': LOGSTASH_HOST,
'port': LOGSTASH_PORT,
'include_extra_fields': True,
'filters': ['request_id', 'static_fields']
},
},
'loggers': {
'daphne.cli': {
'handlers': ['logstash'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
'daphne.server': {
'handlers': ['logstash'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
'celery': {
'handlers': ['logstash'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
'celery.beat': {
'handlers': ['logstash'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
'gelf-api-logger': {
'handlers': ['logstash'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': False,
},
}
}
YS
gelf
формате в логстеш пишет логи (прокидывая всякие extra
поля, которые я сую в реквест, типо request_id
с nginx-a, откуда лог прилетает (апи, вебсокет, админка, статика еще что-то)).pygelf
использую, чтобы логмесседж в красивый json формировался и индексы в elk норм работалиDT
Д
JT
AK
AK
Д
Д
YS
AK