1
1
# This Source Code Form is subject to the terms of the Mozilla Public
2
2
# License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
# file, you can obtain one at http://mozilla.org/MPL/2.0/.
4
+ import logging
5
+
4
6
from django .conf import settings
5
7
from django .core import checks
6
8
from django .http import HttpResponse , HttpResponseNotFound , JsonResponse
14
16
)
15
17
16
18
19
+ logger = logging .getLogger ("dockerflow.django" )
20
+
21
+
17
22
def version (request ):
18
23
"""
19
24
Returns the contents of version.json or a 404.
@@ -51,11 +56,18 @@ def heartbeat(request):
51
56
level = 0
52
57
53
58
for check in all_checks :
54
- detail = heartbeat_check_detail (check )
55
- statuses [check .__name__ ] = detail ["status" ]
56
- level = max (level , detail ["level" ])
57
- if detail ["level" ] > 0 :
58
- details [check .__name__ ] = detail
59
+ check_level , check_errors = heartbeat_check_detail (check )
60
+ level_text = level_to_text (check_level )
61
+ statuses [check .__name__ ] = level_text
62
+ level = max (level , check_level )
63
+ if level > 0 :
64
+ for error in check_errors :
65
+ logger .log (error .level , "%s: %s" , error .id , error .msg )
66
+ details [check .__name__ ] = {
67
+ "status" : level_text ,
68
+ "level" : level ,
69
+ "messages" : {e .id : e .msg for e in check_errors },
70
+ }
59
71
60
72
if level < checks .messages .ERROR :
61
73
status_code = 200
@@ -75,9 +87,4 @@ def heartbeat_check_detail(check):
75
87
errors = check (app_configs = None )
76
88
errors = list (filter (lambda e : e .id not in settings .SILENCED_SYSTEM_CHECKS , errors ))
77
89
level = max ([0 ] + [e .level for e in errors ])
78
-
79
- return {
80
- "status" : level_to_text (level ),
81
- "level" : level ,
82
- "messages" : {e .id : e .msg for e in errors },
83
- }
90
+ return level , errors
0 commit comments