Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds a debug command to view error log #439

Merged
merged 5 commits into from
Jun 6, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions pacu/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ def display_pacu_help():
to solve this problem
console/open_console Generate a URL that will log the current user/role in to
the AWS web console
debug Display the contents of the error log file
""")


Expand Down Expand Up @@ -186,7 +187,7 @@ class Main:
'assume_role', 'aws', 'console', 'data', 'delete_session', 'exec', 'exit', 'export_keys', 'help',
'history', 'import_keys', 'list', 'list_sessions', 'load_commands_file', 'ls', 'open_console', 'quit',
'regions', 'run', 'search', 'services', 'sessions', 'set_keys', 'set_regions', 'set_ua_suffix',
'swap_keys', 'swap_session', 'unset_ua_suffix', 'update_regions', 'use', 'whoami'
'swap_keys', 'swap_session', 'unset_ua_suffix', 'update_regions', 'use', 'whoami', 'debug'
]

def __init__(self):
Expand Down Expand Up @@ -218,8 +219,8 @@ def log_error(self, text, exception_info=None, session=None, local_data=None, gl
log_file_path = '{}/global_error_log.txt'.format(session_dir())

print('\n[{}] Pacu encountered an error while running the previous command. Check {} for technical '
'details. [LOG LEVEL: {}]\n\n {}\n'.format(timestamp, log_file_path,
settings.ERROR_LOG_VERBOSITY.upper(), exception_info))
'details, or use the debug command. [LOG LEVEL: {}]\n\n {}\n'.format(timestamp, log_file_path,
settings.ERROR_LOG_VERBOSITY.upper(), exception_info))

log_file_directory = os.path.dirname(log_file_path)
if log_file_directory and not os.path.exists(log_file_directory):
Expand Down Expand Up @@ -263,6 +264,14 @@ def log_error(self, text, exception_info=None, session=None, local_data=None, gl
'and should most likely be provided to the developers.\n Exception raised: {}'.format(str(error)))
raise

def read_log_file(self):
log_file_path = '{}/error_log.txt'.format(session_dir())
if os.path.exists(log_file_path):
with open(log_file_path, 'r') as log_file:
print(log_file.read())
else:
print('No error log file found.')

# @message: String - message to print and/or write to file
# @output: String - where to output the message: both, file, or screen
# @output_type: String - format for message when written to file: plain or xml
Expand Down Expand Up @@ -633,6 +642,8 @@ def parse_command(self, command):
self.unset_user_agent_suffix()
elif command[0] == 'whoami':
self.print_key_info()
elif command[0] == 'debug':
self.read_log_file()
elif command[0] == 'exit' or command[0] == 'quit':
# write out command history for loading later
readline.write_history_file(settings.history_file)
Expand Down
Loading