57
57
_DEFAULT_RETRY = retry .Retry ()
58
58
59
59
60
- class Logger :
60
+ class VertexLogger ( logging . getLoggerClass ()) :
61
61
"""Logging wrapper class with high level helper methods."""
62
62
63
63
def __init__ (self , name : str ):
@@ -66,12 +66,12 @@ def __init__(self, name: str):
66
66
Args:
67
67
name (str): Name to associate with logger.
68
68
"""
69
- self . _logger = logging . getLogger (name )
70
- self ._logger . setLevel (logging .INFO )
69
+ super (). __init__ (name )
70
+ self .setLevel (logging .INFO )
71
71
72
72
# To avoid writing duplicate logs, skip adding the new handler if
73
73
# StreamHandler already exists in logger hierarchy.
74
- logger = self . _logger
74
+ logger = self
75
75
while logger :
76
76
for handler in logger .handlers :
77
77
if isinstance (handler , logging .StreamHandler ):
@@ -81,7 +81,7 @@ def __init__(self, name: str):
81
81
handler = logging .StreamHandler (sys .stdout )
82
82
handler .setLevel (logging .INFO )
83
83
84
- self ._logger . addHandler (handler )
84
+ self .addHandler (handler )
85
85
86
86
def log_create_with_lro (
87
87
self ,
@@ -96,12 +96,10 @@ def log_create_with_lro(
96
96
lro (operation.Operation):
97
97
Optional. Backing LRO for creation.
98
98
"""
99
- self ._logger . info (f"Creating { cls .__name__ } " )
99
+ self .info (f"Creating { cls .__name__ } " )
100
100
101
101
if lro :
102
- self ._logger .info (
103
- f"Create { cls .__name__ } backing LRO: { lro .operation .name } "
104
- )
102
+ self .info (f"Create { cls .__name__ } backing LRO: { lro .operation .name } " )
105
103
106
104
def log_create_complete (
107
105
self ,
@@ -120,11 +118,9 @@ def log_create_complete(
120
118
Vertex AI Resource proto.Message
121
119
variable_name (str): Name of variable to use for code snippet
122
120
"""
123
- self ._logger .info (f"{ cls .__name__ } created. Resource name: { resource .name } " )
124
- self ._logger .info (f"To use this { cls .__name__ } in another session:" )
125
- self ._logger .info (
126
- f"{ variable_name } = aiplatform.{ cls .__name__ } ('{ resource .name } ')"
127
- )
121
+ self .info (f"{ cls .__name__ } created. Resource name: { resource .name } " )
122
+ self .info (f"To use this { cls .__name__ } in another session:" )
123
+ self .info (f"{ variable_name } = aiplatform.{ cls .__name__ } ('{ resource .name } ')" )
128
124
129
125
def log_create_complete_with_getter (
130
126
self ,
@@ -143,11 +139,9 @@ def log_create_complete_with_getter(
143
139
Vertex AI Resource proto.Message
144
140
variable_name (str): Name of variable to use for code snippet
145
141
"""
146
- self ._logger .info (f"{ cls .__name__ } created. Resource name: { resource .name } " )
147
- self ._logger .info (f"To use this { cls .__name__ } in another session:" )
148
- self ._logger .info (
149
- f"{ variable_name } = aiplatform.{ cls .__name__ } .get('{ resource .name } ')"
150
- )
142
+ self .info (f"{ cls .__name__ } created. Resource name: { resource .name } " )
143
+ self .info (f"To use this { cls .__name__ } in another session:" )
144
+ self .info (f"{ variable_name } = aiplatform.{ cls .__name__ } .get('{ resource .name } ')" )
151
145
152
146
def log_action_start_against_resource (
153
147
self , action : str , noun : str , resource_noun_obj : "VertexAiResourceNoun"
@@ -160,7 +154,7 @@ def log_action_start_against_resource(
160
154
resource_noun_obj (VertexAiResourceNoun):
161
155
Resource noun object the action is acting against.
162
156
"""
163
- self ._logger . info (
157
+ self .info (
164
158
f"{ action } { resource_noun_obj .__class__ .__name__ } { noun } : { resource_noun_obj .resource_name } "
165
159
)
166
160
@@ -180,9 +174,7 @@ def log_action_started_against_resource_with_lro(
180
174
Resource noun object the action is acting against.
181
175
lro (operation.Operation): Backing LRO for action.
182
176
"""
183
- self ._logger .info (
184
- f"{ action } { cls .__name__ } { noun } backing LRO: { lro .operation .name } "
185
- )
177
+ self .info (f"{ action } { cls .__name__ } { noun } backing LRO: { lro .operation .name } " )
186
178
187
179
def log_action_completed_against_resource (
188
180
self , noun : str , action : str , resource_noun_obj : "VertexAiResourceNoun"
@@ -195,13 +187,18 @@ def log_action_completed_against_resource(
195
187
resource_noun_obj (VertexAiResourceNoun):
196
188
Resource noun object the action is acting against
197
189
"""
198
- self ._logger . info (
190
+ self .info (
199
191
f"{ resource_noun_obj .__class__ .__name__ } { noun } { action } . Resource name: { resource_noun_obj .resource_name } "
200
192
)
201
193
202
- def __getattr__ (self , attr : str ):
203
- """Forward remainder of logging to underlying logger."""
204
- return getattr (self ._logger , attr )
194
+
195
+ def Logger (name : str ) -> VertexLogger : # pylint: disable=invalid-name
196
+ old_class = logging .getLoggerClass ()
197
+ try :
198
+ logging .setLoggerClass (VertexLogger )
199
+ return logging .getLogger (name )
200
+ finally :
201
+ logging .setLoggerClass (old_class )
205
202
206
203
207
204
_LOGGER = Logger (__name__ )
0 commit comments