@@ -30,9 +30,8 @@ class LogLevel(Enum):
3030@pytest .fixture
3131def logger (stdout , log_level ):
3232 def _logger ():
33- logging .basicConfig (stream = stdout , level = log_level .NOTSET .value )
34- logger = logging .getLogger (name = service_name ())
35- return logger
33+ logging .basicConfig (stream = stdout , level = log_level .INFO .value )
34+ return logging .getLogger (name = service_name ())
3635
3736 return _logger
3837
@@ -51,142 +50,134 @@ def service_name():
5150
5251
5352def test_copy_config_to_ext_loggers (stdout , logger , log_level ):
54-
55- msg = "test message"
56-
57- # GIVEN a external logger and powertools logger initialized
53+ # GIVEN two external loggers and powertools logger initialized
5854 logger_1 = logger ()
5955 logger_2 = logger ()
6056
6157 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
6258
63- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
59+ # WHEN configuration copied from powertools logger to ALL external loggers
60+ # AND external loggers used
6461 utils .copy_config_to_registered_loggers (source_logger = powertools_logger )
62+ msg = "test message1"
6563 logger_1 .info (msg )
6664 logger_2 .info (msg )
6765 logs = capture_multiple_logging_statements_output (stdout )
6866
69- # THEN
67+ # THEN all external loggers used Powertools handler, formatter and log level
7068 for index , logger in enumerate ([logger_1 , logger_2 ]):
7169 assert len (logger .handlers ) == 1
72- assert type (logger .handlers [0 ]) is logging .StreamHandler
73- assert type (logger .handlers [0 ].formatter ) is formatter .LambdaPowertoolsFormatter
70+ assert isinstance (logger .handlers [0 ], logging .StreamHandler )
71+ assert isinstance (logger .handlers [0 ].formatter , formatter .LambdaPowertoolsFormatter )
7472 assert logger .level == log_level .INFO .value
7573 assert logs [index ]["message" ] == msg
7674 assert logs [index ]["level" ] == log_level .INFO .name
7775
7876
7977def test_copy_config_to_ext_loggers_include (stdout , logger , log_level ):
80-
81- msg = "test message"
82-
83- # GIVEN a external logger and powertools logger initialized
78+ # GIVEN an external logger and powertools logger initialized
8479 logger = logger ()
8580 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
8681
87- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
82+ # WHEN configuration copied from powertools logger to INCLUDED external loggers
83+ # AND our external logger used
8884 utils .copy_config_to_registered_loggers (source_logger = powertools_logger , include = {logger .name })
85+ msg = "test message2"
8986 logger .info (msg )
9087 log = capture_logging_output (stdout )
9188
92- # THEN
89+ # THEN included external loggers used Powertools handler, formatter and log level.
9390 assert len (logger .handlers ) == 1
94- assert type (logger .handlers [0 ]) is logging .StreamHandler
95- assert type (logger .handlers [0 ].formatter ) is formatter .LambdaPowertoolsFormatter
91+ assert isinstance (logger .handlers [0 ], logging .StreamHandler )
92+ assert isinstance (logger .handlers [0 ].formatter , formatter .LambdaPowertoolsFormatter )
9693 assert logger .level == log_level .INFO .value
9794 assert log ["message" ] == msg
9895 assert log ["level" ] == log_level .INFO .name
9996
10097
10198def test_copy_config_to_ext_loggers_wrong_include (stdout , logger , log_level ):
102-
103- # GIVEN a external logger and powertools logger initialized
99+ # GIVEN an external logger and powertools logger initialized
104100 logger = logger ()
105101 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
106102
107- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
103+ # WHEN configuration copied from powertools logger to INCLUDED NON EXISTING external loggers
108104 utils .copy_config_to_registered_loggers (source_logger = powertools_logger , include = {"non-existing-logger" })
109105
110- # THEN
106+ # THEN existing external logger is not modified
111107 assert not logger .handlers
112108
113109
114110def test_copy_config_to_ext_loggers_exclude (stdout , logger , log_level ):
115-
116- # GIVEN a external logger and powertools logger initialized
111+ # GIVEN an external logger and powertools logger initialized
117112 logger = logger ()
118113 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
119114
120- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
115+ # WHEN configuration copied from powertools logger to ALL BUT external logger
121116 utils .copy_config_to_registered_loggers (source_logger = powertools_logger , exclude = {logger .name })
122117
123- # THEN
118+ # THEN external logger is not modified
124119 assert not logger .handlers
125120
126121
127122def test_copy_config_to_ext_loggers_include_exclude (stdout , logger , log_level ):
128-
129- msg = "test message"
130-
131- # GIVEN a external logger and powertools logger initialized
123+ # GIVEN two external loggers and powertools logger initialized
132124 logger_1 = logger ()
133125 logger_2 = logger ()
134126
135127 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
136128
137- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
129+ # WHEN configuration copied from powertools logger to INCLUDED external loggers
130+ # AND external logger_1 is also in EXCLUDE list
138131 utils .copy_config_to_registered_loggers (
139132 source_logger = powertools_logger , include = {logger_1 .name , logger_2 .name }, exclude = {logger_1 .name }
140133 )
134+ msg = "test message3"
141135 logger_2 .info (msg )
142136 log = capture_logging_output (stdout )
143137
144- # THEN
138+ # THEN logger_1 is not modified and Logger_2 used Powertools handler, formatter and log level
145139 assert not logger_1 .handlers
146140 assert len (logger_2 .handlers ) == 1
147- assert type (logger_2 .handlers [0 ]) is logging .StreamHandler
148- assert type (logger_2 .handlers [0 ].formatter ) is formatter .LambdaPowertoolsFormatter
141+ assert isinstance (logger_2 .handlers [0 ], logging .StreamHandler )
142+ assert isinstance (logger_2 .handlers [0 ].formatter , formatter .LambdaPowertoolsFormatter )
149143 assert logger_2 .level == log_level .INFO .value
150144 assert log ["message" ] == msg
151145 assert log ["level" ] == log_level .INFO .name
152146
153147
154148def test_copy_config_to_ext_loggers_clean_old_handlers (stdout , logger , log_level ):
155-
156- # GIVEN a external logger with handler and powertools logger initialized
149+ # GIVEN an external logger with handler and powertools logger initialized
157150 logger = logger ()
158- handler = logging .FileHandler ( "logfile" )
151+ handler = logging .NullHandler ( )
159152 logger .addHandler (handler )
160153 powertools_logger = Logger (service = service_name (), level = log_level .INFO .value , stream = stdout )
161154
162- # WHEN configuration copied from powertools logger to ALL external loggers AND our external logger used
155+ # WHEN configuration copied from powertools logger to ALL external loggers
163156 utils .copy_config_to_registered_loggers (source_logger = powertools_logger )
164157
165- # THEN
158+ # THEN old logger's handler removed and Powertools configuration used instead
166159 assert len (logger .handlers ) == 1
167- assert type (logger .handlers [0 ]) is logging .StreamHandler
168- assert type (logger .handlers [0 ].formatter ) is formatter .LambdaPowertoolsFormatter
160+ assert isinstance (logger .handlers [0 ], logging .StreamHandler )
161+ assert isinstance (logger .handlers [0 ].formatter , formatter .LambdaPowertoolsFormatter )
169162
170163
171164def test_copy_config_to_ext_loggers_custom_log_level (stdout , logger , log_level ):
172-
173- msg = "test message"
174-
175- # GIVEN a external logger and powertools logger initialized
165+ # GIVEN an external logger and powertools logger initialized
176166 logger = logger ()
177167 powertools_logger = Logger (service = service_name (), level = log_level .CRITICAL .value , stream = stdout )
178168 level = log_level .WARNING .name
179169
180- # WHEN configuration copied from powertools logger to ALL external loggers
181- # AND our external logger used with custom log_level
170+ # WHEN configuration copied from powertools logger to INCLUDED external logger
171+ # AND external logger used with custom log_level
182172 utils .copy_config_to_registered_loggers (source_logger = powertools_logger , include = {logger .name }, log_level = level )
173+ msg = "test message4"
183174 logger .warning (msg )
184175 log = capture_logging_output (stdout )
185176
186- # THEN
177+ # THEN external logger used Powertools handler, formatter and CUSTOM log level.
187178 assert len (logger .handlers ) == 1
188- assert type (logger .handlers [0 ]) is logging .StreamHandler
189- assert type (logger .handlers [0 ].formatter ) is formatter .LambdaPowertoolsFormatter
179+ assert isinstance (logger .handlers [0 ], logging .StreamHandler )
180+ assert isinstance (logger .handlers [0 ].formatter , formatter .LambdaPowertoolsFormatter )
190181 assert powertools_logger .level == log_level .CRITICAL .value
191182 assert logger .level == log_level .WARNING .value
192183 assert log ["message" ] == msg
0 commit comments