1
+ import json
1
2
from copy import deepcopy
2
3
3
4
from celery ._state import get_current_task
@@ -17,6 +18,19 @@ def add_fields(self, log_record, record, message_dict) -> None:
17
18
log_record ["task_name" ] = "???"
18
19
log_record ["task_id" ] = "???"
19
20
21
+ def format_json_on_new_lines (self , json_str ):
22
+ # Parse the input JSON string
23
+ data = json .loads (json_str )
24
+
25
+ for key , value in data .items ():
26
+ if isinstance (value , list ) and len (value ) > 10 :
27
+ # If more than 10 elements in a list, concat to single line
28
+ data [key ] = ", " .join (map (str , value ))
29
+
30
+ # Convert the parsed JSON data back to a formatted JSON string
31
+ formatted_json = json .dumps (data , indent = 4 )
32
+ return formatted_json
33
+
20
34
21
35
class CustomLocalJsonFormatter (BaseLogger ):
22
36
def jsonify_log_record (self , log_record ) -> str :
@@ -25,9 +39,10 @@ def jsonify_log_record(self, log_record) -> str:
25
39
message = log_record .pop ("message" )
26
40
exc_info = log_record .pop ("exc_info" , "" )
27
41
content = super ().jsonify_log_record (log_record )
42
+ formatted = super ().format_json_on_new_lines (content ) if content else None
28
43
if exc_info :
29
- return f"{ levelname } : { message } --- { content } \n { exc_info } "
30
- return f"{ levelname } : { message } --- { content } "
44
+ return f"{ levelname } : { message } \n { formatted } \n { exc_info } "
45
+ return f"{ levelname } : { message } \n { formatted } "
31
46
32
47
33
48
class CustomDatadogJsonFormatter (BaseLogger ):
0 commit comments