Skip to content
Closed
Show file tree
Hide file tree
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
10 changes: 9 additions & 1 deletion src/azure-cli-core/azure/cli/core/azlogging.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

from azure.cli.core.commands.events import EVENT_INVOKER_PRE_CMD_TBL_TRUNCATE

from knack.events import EVENT_CLI_POST_EXECUTE
from knack.log import CLILogging, get_logger
from knack.util import ensure_dir

Expand All @@ -46,6 +47,7 @@ def __init__(self, name, cli_ctx=None):
self.command_logger_handler = None
self.command_metadata_logger = None
self.cli_ctx.register_event(EVENT_INVOKER_PRE_CMD_TBL_TRUNCATE, AzCliLogging.init_command_file_logging)
self.cli_ctx.register_event(EVENT_CLI_POST_EXECUTE, AzCliLogging.deinit_cmd_metadata_logging)

def get_command_log_dir(self):
return self.command_log_dir
Expand Down Expand Up @@ -173,13 +175,19 @@ def log_cmd_metadata_extension_info(self, extension_name, extension_version):
self.command_metadata_logger.info("extension name: %s", extension_name)
self.command_metadata_logger.info("extension version: %s", extension_version)

def end_cmd_metadata_logging(self, exit_code):
@staticmethod
def deinit_cmd_metadata_logging(cli_ctx):
self = cli_ctx.logging
self.end_cmd_metadata_logging(cli_ctx.result.exit_code if cli_ctx.result else 128)

def end_cmd_metadata_logging(self, exit_code): # leave it non '-' prefix to not to break user
if self.command_metadata_logger:
self.command_metadata_logger.info("exit code: %s", exit_code)

# We have finished metadata logging, remove handler and set command_metadata_handler to None.
# crucial to remove handler as in python logger objects are shared which can affect testing of this logger
# we do not want duplicate handlers to be added in subsequent calls of _init_command_logfile_handlers
self.command_logger_handler.close()
self.command_metadata_logger.removeHandler(self.command_logger_handler)
self.command_metadata_logger = None

Expand Down
2 changes: 2 additions & 0 deletions src/azure-cli-core/azure/cli/core/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ def handle_exception(ex): # pylint: disable=too-many-return-statements
except (ValueError, KeyError):
logger.error(ex)
return 1
if isinstance(ex, SystemExit):
return ex.code

logger.error("The command failed with an unexpected error. Here is the traceback:\n")
logger.exception(ex)
Expand Down
1 change: 1 addition & 0 deletions src/azure-cli-testsdk/azure/cli/testsdk/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ def _merge_lists(base, patches):
def tearDown(self):
for processor in self._processors_to_reset:
processor.reset()

super(ScenarioTest, self).tearDown()

def create_random_name(self, prefix, length):
Expand Down
2 changes: 0 additions & 2 deletions src/azure-cli/azure/cli/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ def cli_main(cli, args):

elapsed_time = timeit.default_timer() - start_time

az_cli.logging.end_cmd_metadata_logging(exit_code)
sys.exit(exit_code)

except KeyboardInterrupt:
Expand All @@ -61,7 +60,6 @@ def cli_main(cli, args):
except NameError:
pass

az_cli.logging.end_cmd_metadata_logging(exit_code)
raise ex

finally:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.