Skip to content

Commit

Permalink
Add a script to collect logs from containers (#592)
Browse files Browse the repository at this point in the history
  • Loading branch information
vvarg229 committed Aug 8, 2023
2 parents 8dad683 + de9b3d6 commit dc009ea
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions tools/src/zip_dev_env_logs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import docker
import logging
import os
import zipfile
import tempfile


def setup_logging():
"""Initialize logging with level INFO."""
logging.basicConfig(level=logging.INFO)


def save_container_logs(output_directory):
client = docker.from_env()

containers = client.containers.list()

if not os.path.exists(output_directory):
os.makedirs(output_directory)

with tempfile.TemporaryDirectory() as temp_output_directory:
for container in containers:
container_name = container.name
logging.info(f'Saving logs from container: {container_name}')

log_content = container.logs().decode('utf-8')
log_filename = f'{container_name}_logs.txt'
log_file_path = os.path.join(temp_output_directory, log_filename)

with open(log_file_path, 'w', encoding='utf-8') as log_file:
log_file.write(log_content)

logging.info(f'Logs from container {container_name} saved to file: {log_file_path}')

zip_filename = os.path.join(output_directory, 'containers_logs.zip')
with zipfile.ZipFile(zip_filename, 'w') as zip_file:
for folder_name, subfolders, filenames in os.walk(temp_output_directory):
for filename in filenames:
file_path = os.path.join(folder_name, filename)
zip_file.write(file_path, os.path.basename(file_path))

logging.info(f'Containers logs saved to zip archive: {zip_filename}')


if __name__ == "__main__":
setup_logging()
output_directory = os.getcwd()
save_container_logs(output_directory)

0 comments on commit dc009ea

Please sign in to comment.