-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsave_request_info.py
31 lines (26 loc) · 1.1 KB
/
save_request_info.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import json
import typing as T
from functools import wraps
from audit_log.log_entry_model import EventType
from audit_log.logger import grt_logger
def save_request_info_log(event_type: EventType) -> T.Callable:
def wrapper(func: T.Callable) -> T.Callable:
@wraps(func)
async def inner(*args, **kwargs) -> T.Any:
result = await func(*args, **kwargs)
request = kwargs['request']
event = f'{request.method}_{func.__name__.upper()}'
request_params = kwargs.copy()
request_params.pop('request', None)
request_params.pop('db', None)
request_params = f'Request params: {request_params}' if request_params else ''
grt_logger.info(json.dumps({
'user_id': request.state.id,
'user_name': request.state.user_name,
'event_type': event_type.name,
'event': event,
'message': f'Request processed successfully. {request_params}',
}))
return result
return inner
return wrapper