Skip to content

Commit 8bafb61

Browse files
Kalle JokinenJokinenK
authored andcommitted
feat: add resilient_logger for audit log transport (#522)
* feat: add resilient_logger for audit log transport * feat: update django-resilient-logger to 0.3.0 * fix: take care of format issues (pre-commit)
1 parent 9612a4b commit 8bafb61

4 files changed

Lines changed: 47 additions & 0 deletions

File tree

kukkuu/auditlog_settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"social_django.code", # auth model
2828
"social_django.nonce", # auth model
2929
"social_django.partial", # auth model
30+
"resilient_logger.resilientlogentry", # resilient log entries
3031
)
3132

3233
# Configure models registration and other behaviours.

kukkuu/settings.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@
102102
BROWSER_TEST_AD_GROUP_NAME=(str, "kukkuu_browser_test"),
103103
KUKKUU_DEFAULT_LOGGING_LEVEL=(str, "INFO"),
104104
APP_RELEASE=(str, ""),
105+
AUDIT_LOG_ES_URL=(str, ""),
106+
AUDIT_LOG_ES_INDEX=(str, ""),
107+
AUDIT_LOG_ES_USERNAME=(str, ""),
108+
AUDIT_LOG_ES_PASSWORD=(str, ""),
105109
)
106110

107111
VERIFICATION_TOKEN_VALID_MINUTES = env("VERIFICATION_TOKEN_VALID_MINUTES")
@@ -290,6 +294,7 @@ def sentry_before_send(event: Event, hint: Hint):
290294
"verification_tokens",
291295
"auditlog_extra",
292296
"logger_extra",
297+
"resilient_logger",
293298
"kukkuu",
294299
"django_cleanup.apps.CleanupConfig", # This must be included last
295300
]
@@ -496,6 +501,30 @@ def sentry_before_send(event: Event, hint: Hint):
496501
"DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",
497502
}
498503

504+
RESILIENT_LOGGER = {
505+
"origin": "kukkuu",
506+
"environment": env("SENTRY_ENVIRONMENT"),
507+
"sources": [
508+
{
509+
"class": "resilient_logger.sources.DjangoAuditLogSource",
510+
}
511+
],
512+
"targets": [
513+
{
514+
"class": "resilient_logger.targets.ElasticsearchLogTarget",
515+
"es_url": env("AUDIT_LOG_ES_URL"),
516+
"es_username": env("AUDIT_LOG_ES_USERNAME"),
517+
"es_password": env("AUDIT_LOG_ES_PASSWORD"),
518+
"es_index": env("AUDIT_LOG_ES_INDEX"),
519+
"required": True,
520+
}
521+
],
522+
"batch_limit": 5000,
523+
"chunk_size": 500,
524+
"submit_unsent_entries": True,
525+
"clear_sent_entries": True,
526+
}
527+
499528
SPECTACULAR_SETTINGS = {"TITLE": "Kukkuu report API", "VERSION": "1.0.0"}
500529

501530
LOGGING = {

requirements.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ sentry-sdk
3030
social-auth-app-django
3131
django-auditlog-extra@https://github.com/City-of-Helsinki/django-auditlog-extra/archive/bff5fa3921d6821bebdd6be6c9fd20db39d32d54.zip
3232
django-logger-extra@https://github.com/City-of-Helsinki/django-logger-extra/archive/refs/tags/v0.1.0.zip
33+
django-resilient-logger@https://github.com/City-of-Helsinki/django-resilient-logger/archive/refs/tags/v0.3.7.zip

requirements.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ certifi==2025.10.5 \
3838
--hash=sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de \
3939
--hash=sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43
4040
# via
41+
# elastic-transport
4142
# requests
4243
# sentry-sdk
4344
cffi==2.0.0 \
@@ -331,6 +332,7 @@ django==5.2.7 \
331332
# django-logger-extra
332333
# django-mailer
333334
# django-parler
335+
# django-resilient-logger
334336
# django-storages
335337
# djangorestframework
336338
# drf-oidc-auth
@@ -406,6 +408,9 @@ django-parler==2.3 \
406408
# via
407409
# -r requirements.in
408410
# django-ilmoitin
411+
django-resilient-logger @ https://github.com/City-of-Helsinki/django-resilient-logger/archive/refs/tags/v0.3.7.zip \
412+
--hash=sha256:abc8c6dacfb1db8bb452e3991d0d820e6ca2a911fd62daca3847c2d9bf56beb7
413+
# via -r requirements.in
409414
django-storages==1.14.6 \
410415
--hash=sha256:11b7b6200e1cb5ffcd9962bd3673a39c7d6a6109e8096f0e03d46fab3d3aabd9 \
411416
--hash=sha256:7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9
@@ -430,6 +435,14 @@ ecdsa==0.19.1 \
430435
--hash=sha256:30638e27cf77b7e15c4c4cc1973720149e1033827cfd00661ca5c8cc0cdb24c3 \
431436
--hash=sha256:478cba7b62555866fcb3bb3fe985e06decbdb68ef55713c4e5ab98c57d508e61
432437
# via python-jose
438+
elastic-transport==8.17.1 \
439+
--hash=sha256:192718f498f1d10c5e9aa8b9cf32aed405e469a7f0e9d6a8923431dbb2c59fb8 \
440+
--hash=sha256:5edef32ac864dca8e2f0a613ef63491ee8d6b8cfb52881fa7313ba9290cac6d2
441+
# via elasticsearch
442+
elasticsearch==8.19.2 \
443+
--hash=sha256:622efa6a3e662db45285f16ab57bf198ea73ac9e137e7ed8b1d1d1e47638959d \
444+
--hash=sha256:c16ba20c4c76cf6952e836dae7f4e724e00ba7bf31b94b79472b873683accdd4
445+
# via django-resilient-logger
433446
factory-boy==3.3.3 \
434447
--hash=sha256:1c39e3289f7e667c4285433f305f8d506efc2fe9c73aaea4151ebd5cdea394fc \
435448
--hash=sha256:866862d226128dfac7f2b4160287e899daf54f2612778327dd03d0e2cb1e3d03
@@ -738,6 +751,7 @@ python-dateutil==2.9.0.post0 \
738751
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
739752
# via
740753
# django-auditlog
754+
# elasticsearch
741755
# graphene
742756
python-jose==3.5.0 \
743757
--hash=sha256:abd1202f23d34dfad2c3d28cb8617b90acf34132c7afd60abd0b0b7d3cb55771 \
@@ -1045,6 +1059,7 @@ typing-extensions==4.15.0 \
10451059
# azure-core
10461060
# azure-storage-blob
10471061
# django-guardian
1062+
# elasticsearch
10481063
# graphene
10491064
# psycopg
10501065
# referencing
@@ -1061,5 +1076,6 @@ urllib3==2.5.0 \
10611076
--hash=sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc
10621077
# via
10631078
# django-anymail
1079+
# elastic-transport
10641080
# requests
10651081
# sentry-sdk

0 commit comments

Comments
 (0)