Skip to content

Commit

Permalink
consolidate logs of python script into container logs (#21)
Browse files Browse the repository at this point in the history
Signed-off-by: Harshad Reddy Nalla <hnalla@redhat.com>
  • Loading branch information
harshad16 authored Jun 21, 2024
1 parent 71570d3 commit d377d49
Showing 1 changed file with 33 additions and 19 deletions.
52 changes: 33 additions & 19 deletions elyra/kfp/bootstrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ def execute(self) -> None:
"""Execute the Python script and upload results to object storage"""
python_script = os.path.basename(self.filepath)
python_script_name = python_script.replace(".py", "")
python_script_output = f"{python_script_name}.log"
# python_script_output = f"{python_script_name}.log"

try:
OpUtil.log_operation_info(
Expand All @@ -485,28 +485,30 @@ def execute(self) -> None:
self.set_parameters_in_env()

logger.info("----------------------Python logs start----------------------")
with open(python_script_output, "w") as log_file:
process = subprocess.Popen(run_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(process.stdout.readline, b''):
sys.stdout.write(line.decode())
log_file.write(line.decode())

process.stdout.close()
return_code = process.wait()
logger.info("----------------------Python logs ends----------------------")
if return_code:
raise subprocess.CalledProcessError(return_code, run_args)
# Removing support for the s3 storage of python script logs
# with open(python_script_output, "w") as log_file:
# process = subprocess.Popen(run_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process = subprocess.Popen(run_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

for line in iter(process.stdout.readline, b''):
sys.stdout.write(line.decode())

process.stdout.close()
return_code = process.wait()
logger.info("----------------------Python logs ends----------------------")
if return_code:
raise subprocess.CalledProcessError(return_code, run_args)
duration = time.time() - t0
OpUtil.log_operation_info("python script execution completed", duration)

self.put_file_to_object_storage(python_script_output, python_script_output)
# self.put_file_to_object_storage(python_script_output, python_script_output)
self.process_outputs()
except Exception as ex:
# log in case of errors
logger.error(f"Unexpected error: {sys.exc_info()[0]}")
logger.error(f"Error details: {ex}")

self.put_file_to_object_storage(python_script_output, python_script_output)
# self.put_file_to_object_storage(python_script_output, python_script_output)
raise ex


Expand All @@ -517,7 +519,7 @@ def execute(self) -> None:
"""Execute the R script and upload results to object storage"""
r_script = os.path.basename(self.filepath)
r_script_name = r_script.replace(".r", "")
r_script_output = f"{r_script_name}.log"
# r_script_output = f"{r_script_name}.log"

try:
OpUtil.log_operation_info(f"executing R script using 'Rscript {r_script}' to '{r_script_output}'")
Expand All @@ -527,20 +529,32 @@ def execute(self) -> None:
if self.parameter_pass_method == "env":
self.set_parameters_in_env()

with open(r_script_output, "w") as log_file:
subprocess.run(run_args, stdout=log_file, stderr=subprocess.STDOUT, check=True)
logger.info("----------------------R script logs start----------------------")
# Removing support for the s3 storage of R script logs
# with open(r_script_output, "w") as log_file:
# process = subprocess.Popen(run_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process = subprocess.Popen(run_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

for line in iter(process.stdout.readline, b''):
sys.stdout.write(line.decode())

process.stdout.close()
return_code = process.wait()
logger.info("----------------------R script logs ends----------------------")
if return_code:
raise subprocess.CalledProcessError(return_code, run_args)

duration = time.time() - t0
OpUtil.log_operation_info("R script execution completed", duration)

self.put_file_to_object_storage(r_script_output, r_script_output)
# self.put_file_to_object_storage(r_script_output, r_script_output)
self.process_outputs()
except Exception as ex:
# log in case of errors
logger.error(f"Unexpected error: {sys.exc_info()[0]}")
logger.error(f"Error details: {ex}")

self.put_file_to_object_storage(r_script_output, r_script_output)
# self.put_file_to_object_storage(r_script_output, r_script_output)
raise ex


Expand Down

0 comments on commit d377d49

Please sign in to comment.