Skip to content

Commit 874fcb9

Browse files
committed
Using logging instead of prints
1 parent 2035034 commit 874fcb9

File tree

9 files changed

+78
-71
lines changed

9 files changed

+78
-71
lines changed

src/sagemaker/base_predictor.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from __future__ import print_function, absolute_import
1515

1616
import abc
17+
import logging
1718
from typing import Any, Tuple
1819

1920
from sagemaker.deprecations import (
@@ -54,6 +55,9 @@
5455
from sagemaker.lineage.context import EndpointContext
5556

5657

58+
logger = logging.getLogger(__name__)
59+
60+
5761
class PredictorBase(abc.ABC):
5862
"""An object that encapsulates a deployed model."""
5963

@@ -452,7 +456,7 @@ def list_monitors(self):
452456
endpoint_name=self.endpoint_name
453457
)
454458
if len(monitoring_schedules_dict["MonitoringScheduleSummaries"]) == 0:
455-
print("No monitors found for endpoint. endpoint: {}".format(self.endpoint_name))
459+
logger.debug("No monitors found for endpoint. endpoint: {}".format(self.endpoint_name))
456460
return []
457461

458462
monitors = []

src/sagemaker/cli/compatibility/v2/files.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222

2323
from sagemaker.cli.compatibility.v2.ast_transformer import ASTTransformer
2424

25-
LOGGER = logging.getLogger(__name__)
25+
# Setting LOGGER for backward compatibility, in case users import this...
26+
logger = LOGGER = logging.getLogger(__name__)
2627

2728

2829
class FileUpdater(object):
@@ -59,7 +60,7 @@ def _make_output_dirs_if_needed(self):
5960
os.makedirs(output_dir)
6061

6162
if os.path.exists(self.output_path):
62-
LOGGER.warning("Overwriting file %s", self.output_path)
63+
logger.warning("Overwriting file %s", self.output_path)
6364

6465

6566
class PyFileUpdater(FileUpdater):

src/sagemaker/fw_utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ def tar_and_upload_dir(
473473
if s3_resource is None:
474474
s3_resource = session.resource("s3", region_name=session.region_name)
475475
else:
476-
print("Using provided s3_resource")
476+
logger.debug("Using provided s3_resource")
477477

478478
s3_resource.Object(bucket, key).upload_file(tar_file, ExtraArgs=extra_args)
479479
finally:

src/sagemaker/local/entities.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ def start(self, **kwargs):
669669
execution = _LocalPipelineExecution(execution_id, self.pipeline, **kwargs)
670670

671671
self._executions[execution_id] = execution
672-
print(
672+
logger.info(
673673
f"Starting execution for pipeline {self.pipeline.name}. Execution ID is {execution_id}"
674674
)
675675
self.last_modified_time = datetime.datetime.now().timestamp()
@@ -733,31 +733,31 @@ def update_execution_success(self):
733733
"""Mark execution as succeeded."""
734734
self.status = _LocalExecutionStatus.SUCCEEDED.value
735735
self.last_modified_time = datetime.datetime.now().timestamp()
736-
print(f"Pipeline execution {self.pipeline_execution_name} SUCCEEDED")
736+
logger.info(f"Pipeline execution {self.pipeline_execution_name} SUCCEEDED")
737737

738738
def update_execution_failure(self, step_name, failure_message):
739739
"""Mark execution as failed."""
740740
self.status = _LocalExecutionStatus.FAILED.value
741741
self.failure_reason = f"Step '{step_name}' failed with message: {failure_message}"
742742
self.last_modified_time = datetime.datetime.now().timestamp()
743-
print(
743+
logger.info(
744744
f"Pipeline execution {self.pipeline_execution_name} FAILED because step "
745745
f"'{step_name}' failed."
746746
)
747747

748748
def update_step_properties(self, step_name, step_properties):
749749
"""Update pipeline step execution output properties."""
750750
self.step_execution.get(step_name).update_step_properties(step_properties)
751-
print(f"Pipeline step '{step_name}' SUCCEEDED.")
751+
logger.info(f"Pipeline step '{step_name}' SUCCEEDED.")
752752

753753
def update_step_failure(self, step_name, failure_message):
754754
"""Mark step_name as failed."""
755-
print(f"Pipeline step '{step_name}' FAILED. Failure message is: {failure_message}")
755+
logger.info(f"Pipeline step '{step_name}' FAILED. Failure message is: {failure_message}")
756756
self.step_execution.get(step_name).update_step_failure(failure_message)
757757

758758
def mark_step_executing(self, step_name):
759759
"""Update pipelines step's status to EXECUTING and start_time to now."""
760-
print(f"Starting pipeline step: '{step_name}'")
760+
logger.info(f"Starting pipeline step: '{step_name}'")
761761
self.step_execution.get(step_name).mark_step_executing()
762762

763763
def _initialize_step_execution(self, steps):

src/sagemaker/local/image.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ def process(
189189

190190
# Print our Job Complete line to have a similar experience to training on SageMaker where
191191
# you see this line at the end.
192-
print("===== Job Complete =====")
192+
logger.info("===== Job Complete =====")
193193

194194
def train(self, input_data_config, output_data_config, hyperparameters, environment, job_name):
195195
"""Run a training job locally using docker-compose.
@@ -269,7 +269,7 @@ def train(self, input_data_config, output_data_config, hyperparameters, environm
269269

270270
# Print our Job Complete line to have a similar experience to training on SageMaker where
271271
# you see this line at the end.
272-
print("===== Job Complete =====")
272+
logger.info("===== Job Complete =====")
273273
return artifacts
274274

275275
def serve(self, model_dir, environment):

src/sagemaker/model_monitor/clarify_model_monitoring.py

+19-18
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
from sagemaker.clarify import SageMakerClarifyProcessor, ModelPredictedLabelConfig
3030
from sagemaker.lineage._utils import get_resource_name_from_arn
3131

32-
_LOGGER = logging.getLogger(__name__)
32+
# Setting _LOGGER for backward compatibility, in case users import it...
33+
logger = _LOGGER = logging.getLogger(__name__)
3334

3435

3536
class ClarifyModelMonitor(mm.ModelMonitor):
@@ -223,7 +224,7 @@ def _upload_analysis_config(self, analysis_config, output_s3_uri, job_definition
223224
str(uuid.uuid4()),
224225
"analysis_config.json",
225226
)
226-
_LOGGER.info("Uploading analysis config to {s3_uri}.")
227+
logger.info("Uploading analysis config to {s3_uri}.")
227228
return s3.S3Uploader.upload_string_as_file_body(
228229
json.dumps(analysis_config),
229230
desired_s3_uri=s3_uri,
@@ -598,7 +599,7 @@ def create_monitoring_schedule(
598599
"Monitoring Schedule. To create another, first delete the existing one "
599600
"using my_monitor.delete_monitoring_schedule()."
600601
)
601-
_LOGGER.error(message)
602+
logger.error(message)
602603
raise ValueError(message)
603604

604605
if (batch_transform_input is not None) ^ (endpoint_input is None):
@@ -607,7 +608,7 @@ def create_monitoring_schedule(
607608
"Amazon Model Monitoring Schedule. "
608609
"Please provide only one of the above required inputs"
609610
)
610-
_LOGGER.error(message)
611+
logger.error(message)
611612
raise ValueError(message)
612613

613614
# create job definition
@@ -653,15 +654,15 @@ def create_monitoring_schedule(
653654
self.job_definition_name = new_job_definition_name
654655
self.monitoring_schedule_name = monitor_schedule_name
655656
except Exception:
656-
_LOGGER.exception("Failed to create monitoring schedule.")
657+
logger.exception("Failed to create monitoring schedule.")
657658
# noinspection PyBroadException
658659
try:
659660
self.sagemaker_session.sagemaker_client.delete_model_bias_job_definition(
660661
JobDefinitionName=new_job_definition_name
661662
)
662663
except Exception: # pylint: disable=W0703
663664
message = "Failed to delete job definition {}.".format(new_job_definition_name)
664-
_LOGGER.exception(message)
665+
logger.exception(message)
665666
raise
666667

667668
# noinspection PyMethodOverriding
@@ -740,7 +741,7 @@ def update_monitoring_schedule(
740741
"Amazon Model Monitoring Schedule. "
741742
"Please provide only one of the above required inputs"
742743
)
743-
_LOGGER.error(message)
744+
logger.error(message)
744745
raise ValueError(message)
745746

746747
# Only need to update schedule expression
@@ -799,15 +800,15 @@ def update_monitoring_schedule(
799800
if network_config is not None:
800801
self.network_config = network_config
801802
except Exception:
802-
_LOGGER.exception("Failed to update monitoring schedule.")
803+
logger.exception("Failed to update monitoring schedule.")
803804
# noinspection PyBroadException
804805
try:
805806
self.sagemaker_session.sagemaker_client.delete_model_bias_job_definition(
806807
JobDefinitionName=new_job_definition_name
807808
)
808809
except Exception: # pylint: disable=W0703
809810
message = "Failed to delete job definition {}.".format(new_job_definition_name)
810-
_LOGGER.exception(message)
811+
logger.exception(message)
811812
raise
812813

813814
def delete_monitoring_schedule(self):
@@ -817,7 +818,7 @@ def delete_monitoring_schedule(self):
817818
message = "Deleting Model Bias Job Definition with name: {}".format(
818819
self.job_definition_name
819820
)
820-
_LOGGER.info(message)
821+
logger.info(message)
821822
self.sagemaker_session.sagemaker_client.delete_model_bias_job_definition(
822823
JobDefinitionName=self.job_definition_name
823824
)
@@ -1018,7 +1019,7 @@ def create_monitoring_schedule(
10181019
"Monitoring Schedule. To create another, first delete the existing one "
10191020
"using my_monitor.delete_monitoring_schedule()."
10201021
)
1021-
_LOGGER.error(message)
1022+
logger.error(message)
10221023
raise ValueError(message)
10231024

10241025
if (batch_transform_input is not None) ^ (endpoint_input is None):
@@ -1027,7 +1028,7 @@ def create_monitoring_schedule(
10271028
"Amazon Model Monitoring Schedule."
10281029
"Please provide only one of the above required inputs"
10291030
)
1030-
_LOGGER.error(message)
1031+
logger.error(message)
10311032
raise ValueError(message)
10321033

10331034
# create job definition
@@ -1074,15 +1075,15 @@ def create_monitoring_schedule(
10741075
self.job_definition_name = new_job_definition_name
10751076
self.monitoring_schedule_name = monitor_schedule_name
10761077
except Exception:
1077-
_LOGGER.exception("Failed to create monitoring schedule.")
1078+
logger.exception("Failed to create monitoring schedule.")
10781079
# noinspection PyBroadException
10791080
try:
10801081
self.sagemaker_session.sagemaker_client.delete_model_explainability_job_definition(
10811082
JobDefinitionName=new_job_definition_name
10821083
)
10831084
except Exception: # pylint: disable=W0703
10841085
message = "Failed to delete job definition {}.".format(new_job_definition_name)
1085-
_LOGGER.exception(message)
1086+
logger.exception(message)
10861087
raise
10871088

10881089
# noinspection PyMethodOverriding
@@ -1159,7 +1160,7 @@ def update_monitoring_schedule(
11591160
"Amazon Model Monitoring Schedule. "
11601161
"Please provide only one of the above required inputs"
11611162
)
1162-
_LOGGER.error(message)
1163+
logger.error(message)
11631164
raise ValueError(message)
11641165

11651166
# Only need to update schedule expression
@@ -1221,15 +1222,15 @@ def update_monitoring_schedule(
12211222
if network_config is not None:
12221223
self.network_config = network_config
12231224
except Exception:
1224-
_LOGGER.exception("Failed to update monitoring schedule.")
1225+
logger.exception("Failed to update monitoring schedule.")
12251226
# noinspection PyBroadException
12261227
try:
12271228
self.sagemaker_session.sagemaker_client.delete_model_explainability_job_definition(
12281229
JobDefinitionName=new_job_definition_name
12291230
)
12301231
except Exception: # pylint: disable=W0703
12311232
message = "Failed to delete job definition {}.".format(new_job_definition_name)
1232-
_LOGGER.exception(message)
1233+
logger.exception(message)
12331234
raise
12341235

12351236
def delete_monitoring_schedule(self):
@@ -1239,7 +1240,7 @@ def delete_monitoring_schedule(self):
12391240
message = "Deleting Model Explainability Job Definition with name: {}".format(
12401241
self.job_definition_name
12411242
)
1242-
_LOGGER.info(message)
1243+
logger.info(message)
12431244
self.sagemaker_session.sagemaker_client.delete_model_explainability_job_definition(
12441245
JobDefinitionName=self.job_definition_name
12451246
)

0 commit comments

Comments
 (0)