2
2
SATOSA microservice that outputs log in custom format.
3
3
"""
4
4
5
- from .base import ResponseMicroService
6
- from satosa .logging_util import satosa_logging
7
- from base64 import urlsafe_b64encode , urlsafe_b64decode
8
-
9
- import json
10
5
import copy
6
+ import json
11
7
import logging
12
8
9
+ import satosa .logging_util as lu
10
+ from .base import ResponseMicroService
11
+
12
+
13
13
logger = logging .getLogger (__name__ )
14
14
15
+
15
16
class CustomLoggingService (ResponseMicroService ):
16
17
"""
17
18
Use context and data object to create custom log output
@@ -21,7 +22,7 @@ class CustomLoggingService(ResponseMicroService):
21
22
def __init__ (self , config , * args , ** kwargs ):
22
23
super ().__init__ (* args , ** kwargs )
23
24
self .config = config
24
-
25
+
25
26
def process (self , context , data ):
26
27
logprefix = CustomLoggingService .logprefix
27
28
@@ -30,18 +31,26 @@ def process(self, context, data):
30
31
config = self .config
31
32
configClean = copy .deepcopy (config )
32
33
33
- satosa_logging (logger , logging .DEBUG , "{} Using default configuration {}" .format (logprefix , configClean ), context .state )
34
+ msg = "{} Using default configuration {}" .format (logprefix , configClean )
35
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
36
+ logger .debug (logline )
34
37
35
38
# Find the entityID for the SP that initiated the flow and target IdP
36
39
try :
37
40
spEntityID = context .state .state_dict ['SATOSA_BASE' ]['requester' ]
38
41
idpEntityID = data .auth_info .issuer
39
42
except KeyError as err :
40
- satosa_logging (logger , logging .ERROR , "{} Unable to determine the entityID's for the IdP or SP" .format (logprefix ), context .state )
43
+ msg = "{} Unable to determine the entityID's for the IdP or SP" .format (logprefix )
44
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
45
+ logger .error (logline )
41
46
return super ().process (context , data )
42
47
43
- satosa_logging (logger , logging .DEBUG , "{} entityID for the SP requester is {}" .format (logprefix , spEntityID ), context .state )
44
- satosa_logging (logger , logging .ERROR , "{} entityID for the target IdP is {}" .format (logprefix , idpEntityID ), context .state )
48
+ msg = "{} entityID for the SP requester is {}" .format (logprefix , spEntityID )
49
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
50
+ logger .debug (logline )
51
+ msg = "{} entityID for the target IdP is {}" .format (logprefix , idpEntityID )
52
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
53
+ logger .error (logline )
45
54
46
55
# Obtain configuration details from the per-SP configuration or the default configuration
47
56
try :
@@ -57,17 +66,25 @@ def process(self, context, data):
57
66
58
67
59
68
except KeyError as err :
60
- satosa_logging (logger , logging .ERROR , "{} Configuration '{}' is missing" .format (logprefix , err ), context .state )
69
+ msg = "{} Configuration '{}' is missing" .format (logprefix , err )
70
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
71
+ logger .error (logline )
61
72
return super ().process (context , data )
62
73
63
74
record = None
64
75
65
76
try :
66
- satosa_logging (logger , logging .DEBUG , "{} Using context {}" .format (logprefix , context ), context .state )
67
- satosa_logging (logger , logging .DEBUG , "{} Using data {}" .format (logprefix , data .to_dict ()), context .state )
77
+ msg = "{} Using context {}" .format (logprefix , context )
78
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
79
+ logger .debug (logline )
80
+ msg = "{} Using data {}" .format (logprefix , data .to_dict ())
81
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
82
+ logger .debug (logline )
68
83
69
84
# Open log_target file
70
- satosa_logging (logger , logging .DEBUG , "{} Opening log_target file {}" .format (logprefix , log_target ), context .state )
85
+ msg = "{} Opening log_target file {}" .format (logprefix , log_target )
86
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
87
+ logger .debug (logline )
71
88
loghandle = open (log_target ,"a" )
72
89
73
90
# This is where the logging magic happens
@@ -78,15 +95,19 @@ def process(self, context, data):
78
95
log ['idp' ] = idpEntityID
79
96
log ['sp' ] = spEntityID
80
97
log ['attr' ] = { key : data .to_dict ()['attr' ].get (key ) for key in attrs }
81
-
98
+
82
99
print (json .dumps (log ), file = loghandle , end = "\n " )
83
100
84
101
except Exception as err :
85
- satosa_logging (logger , logging .ERROR , "{} Caught exception: {0}" .format (logprefix , err ), None )
102
+ msg = "{} Caught exception: {}" .format (logprefix , err )
103
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (None ), message = msg )
104
+ logger .error (logline )
86
105
return super ().process (context , data )
87
106
88
107
else :
89
- satosa_logging (logger , logging .DEBUG , "{} Closing log_target file" .format (logprefix ), context .state )
108
+ msg = "{} Closing log_target file" .format (logprefix )
109
+ logline = lu .LOG_FMT .format (id = lu .get_session_id (context .state ), message = msg )
110
+ logger .debug (logline )
90
111
91
112
# Close log_target file
92
113
loghandle .close ()
0 commit comments