Tools: Fix script logging

Fix issue preventing scripts respecting --log_level argument, by adding
a non-default handler. Also, add script name to log output.

Change-Id: I100a5c29276d362dc38cd6c46f472e5991873293
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/bl1/bl1_2/scripts/create_bl2_img.py b/bl1/bl1_2/scripts/create_bl2_img.py
index 8241d49..a0db08d 100644
--- a/bl1/bl1_2/scripts/create_bl2_img.py
+++ b/bl1/bl1_2/scripts/create_bl2_img.py
@@ -10,7 +10,7 @@
 import encrypt_data
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 from arg_utils import *
 from crypto_conversion_utils import convert_curve_define, convert_hash_define
 
@@ -176,7 +176,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     config = parse_args(args, "")
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_blob_message.py b/platform/ext/target/arm/rse/common/scripts/create_blob_message.py
index 1642029..96212b1 100644
--- a/platform/ext/target/arm/rse/common/scripts/create_blob_message.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_blob_message.py
@@ -7,7 +7,7 @@
 #-------------------------------------------------------------------------------
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 import os
 import sys
diff --git a/platform/ext/target/arm/rse/common/scripts/create_cm_provisioning_bundle.py b/platform/ext/target/arm/rse/common/scripts/create_cm_provisioning_bundle.py
index 846f13b..3569c99 100755
--- a/platform/ext/target/arm/rse/common/scripts/create_cm_provisioning_bundle.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_cm_provisioning_bundle.py
@@ -13,7 +13,7 @@
 import arg_utils
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 sys.path.append(os.path.join(sys.path[0], 'modules'))
 
@@ -71,7 +71,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     kwargs = parse_args(args)
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_combined_provisioning_bundle.py b/platform/ext/target/arm/rse/common/scripts/create_combined_provisioning_bundle.py
index 777fb1d..994f0f5 100755
--- a/platform/ext/target/arm/rse/common/scripts/create_combined_provisioning_bundle.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_combined_provisioning_bundle.py
@@ -13,7 +13,7 @@
 import arg_utils
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 sys.path.append(os.path.join(sys.path[0], 'modules'))
 
@@ -66,7 +66,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     kwargs = parse_args(args)
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_dm_chained_provisioning_bundle.py b/platform/ext/target/arm/rse/common/scripts/create_dm_chained_provisioning_bundle.py
index 1a49933..d84dec8 100755
--- a/platform/ext/target/arm/rse/common/scripts/create_dm_chained_provisioning_bundle.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_dm_chained_provisioning_bundle.py
@@ -13,7 +13,7 @@
 import arg_utils
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 sys.path.append(os.path.join(sys.path[0], 'modules'))
 
@@ -69,6 +69,7 @@
 
     args = parser.parse_args()
     logger.setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     kwargs = parse_args(args)
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_dm_provisioning_bundle.py b/platform/ext/target/arm/rse/common/scripts/create_dm_provisioning_bundle.py
index b86fd2f..c94fa03 100755
--- a/platform/ext/target/arm/rse/common/scripts/create_dm_provisioning_bundle.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_dm_provisioning_bundle.py
@@ -13,7 +13,7 @@
 import arg_utils
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 sys.path.append(os.path.join(sys.path[0], 'modules'))
 
@@ -72,7 +72,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     kwargs = parse_args(args)
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_otp_layout_specification.py b/platform/ext/target/arm/rse/common/scripts/create_otp_layout_specification.py
index 330b435..5779d89 100644
--- a/platform/ext/target/arm/rse/common/scripts/create_otp_layout_specification.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_otp_layout_specification.py
@@ -5,7 +5,7 @@
 import re
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 from arg_utils import parse_args_automatically
 
diff --git a/platform/ext/target/arm/rse/common/scripts/create_plain_data_message.py b/platform/ext/target/arm/rse/common/scripts/create_plain_data_message.py
index f9c4965..07dc48c 100644
--- a/platform/ext/target/arm/rse/common/scripts/create_plain_data_message.py
+++ b/platform/ext/target/arm/rse/common/scripts/create_plain_data_message.py
@@ -7,7 +7,7 @@
 #-------------------------------------------------------------------------------
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 import os
 import sys
diff --git a/platform/ext/target/arm/rse/common/scripts/modules/otp_config.py b/platform/ext/target/arm/rse/common/scripts/modules/otp_config.py
index 174b8f2..ae4f80c 100644
--- a/platform/ext/target/arm/rse/common/scripts/modules/otp_config.py
+++ b/platform/ext/target/arm/rse/common/scripts/modules/otp_config.py
@@ -15,7 +15,7 @@
 import arg_utils
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 def add_arguments(parser : argparse.ArgumentParser,
                   prefix : str = "",
@@ -166,7 +166,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     includes = c_include.get_includes(args.compile_commands_file, "otp_lcm.c")
     defines = c_include.get_defines(args.compile_commands_file, "otp_lcm.c")
diff --git a/platform/ext/target/arm/rse/common/scripts/modules/provisioning_config.py b/platform/ext/target/arm/rse/common/scripts/modules/provisioning_config.py
index ce4ff58..dbd7500 100644
--- a/platform/ext/target/arm/rse/common/scripts/modules/provisioning_config.py
+++ b/platform/ext/target/arm/rse/common/scripts/modules/provisioning_config.py
@@ -18,15 +18,12 @@
 from cryptography.hazmat.primitives import hashes
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 from cryptography.hazmat.primitives.serialization import load_der_public_key, Encoding, PublicFormat
 
 from crypto_conversion_utils import convert_hash_define
 
-import logging
-logger = logging.getLogger("TF-M")
-
 all_regions = ['cm', 'dm']
 
 def _get_rotpk_area_index(f : str):
@@ -381,8 +378,10 @@
     parser.add_argument("--provisioning_config_output_file", help="file to output provisioning config to", required=True)
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
+    from rich import inspect
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     includes = c_include.get_includes(args.compile_commands_file, "otp_lcm.c")
     defines = c_include.get_defines(args.compile_commands_file, "otp_lcm.c")
diff --git a/platform/ext/target/arm/rse/common/scripts/modules/provisioning_message_config.py b/platform/ext/target/arm/rse/common/scripts/modules/provisioning_message_config.py
index c57e528..04846eb 100644
--- a/platform/ext/target/arm/rse/common/scripts/modules/provisioning_message_config.py
+++ b/platform/ext/target/arm/rse/common/scripts/modules/provisioning_message_config.py
@@ -20,7 +20,7 @@
 import argparse
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 def add_arguments(parser : argparse.ArgumentParser,
                   prefix : str = "",
@@ -428,7 +428,8 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     includes = c_include.get_includes(args.compile_commands_file, "otp_lcm.c")
     defines = c_include.get_defines(args.compile_commands_file, "otp_lcm.c")
diff --git a/platform/ext/target/arm/rse/common/scripts/modules/rse_provisioning_message.py b/platform/ext/target/arm/rse/common/scripts/modules/rse_provisioning_message.py
index b76e833..2134421 100644
--- a/platform/ext/target/arm/rse/common/scripts/modules/rse_provisioning_message.py
+++ b/platform/ext/target/arm/rse/common/scripts/modules/rse_provisioning_message.py
@@ -13,7 +13,7 @@
 import sign_then_encrypt_data
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 from provisioning_message_config import Provisioning_message_config
 
diff --git a/tools/modules/arg_utils.py b/tools/modules/arg_utils.py
index 80093a7..c0482b7 100644
--- a/tools/modules/arg_utils.py
+++ b/tools/modules/arg_utils.py
@@ -8,7 +8,7 @@
 import argparse
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 from elftools.elf.elffile import ELFFile
 from file_loader import load_bytes_from_file
diff --git a/tools/modules/c_include.py b/tools/modules/c_include.py
index 636f31d..e3185dc 100644
--- a/tools/modules/c_include.py
+++ b/tools/modules/c_include.py
@@ -9,6 +9,9 @@
 import os
 import json
 
+import logging
+logger = logging.getLogger("TF-M.{}".format(__name__))
+
 def get_compile_command(compile_commands_file, c_file):
     with open(compile_commands_file, "rt") as f:
         compile_commands = json.load(f)
@@ -32,7 +35,8 @@
     parser.add_argument("--c_file", help="name of the c file to take", required=True)
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     print(get_compile_command(args.compile_commands_file, args.c_file))
     print(get_includes(args.compile_commands_file, args.c_file))
diff --git a/tools/modules/c_struct.py b/tools/modules/c_struct.py
index 08c0428..e88bebc 100644
--- a/tools/modules/c_struct.py
+++ b/tools/modules/c_struct.py
@@ -12,7 +12,7 @@
 import os
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 from rich import inspect
 
@@ -643,7 +643,8 @@
     parser.add_argument("--c_file_to_mirror_includes_from", help="name of the c file to take", required=True)
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     includes = c_include.get_includes(args.compile_commands_file, args.c_file_to_mirror_includes_from)
     defines = c_include.get_defines(args.compile_commands_file, args.c_file_to_mirror_includes_from)
diff --git a/tools/modules/crypto_conversion_utils.py b/tools/modules/crypto_conversion_utils.py
index ddf1c79..4666ef1 100644
--- a/tools/modules/crypto_conversion_utils.py
+++ b/tools/modules/crypto_conversion_utils.py
@@ -9,7 +9,7 @@
 from cryptography.hazmat.primitives import hashes
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 def convert_curve_define(define_name : str,
                          define_prefix : str = "",
diff --git a/tools/modules/encrypt_data.py b/tools/modules/encrypt_data.py
index e4eacc9..6508d9f 100644
--- a/tools/modules/encrypt_data.py
+++ b/tools/modules/encrypt_data.py
@@ -12,7 +12,7 @@
 
 import argparse
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 from arg_utils import *
 import secrets
 
@@ -96,7 +96,9 @@
     add_arguments(parser, required=True)
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
+
     config = parse_args(args)
     config |= parse_args_automatically(args, ["data"])
 
diff --git a/tools/modules/file_loader.py b/tools/modules/file_loader.py
index 249c93f..aa42140 100644
--- a/tools/modules/file_loader.py
+++ b/tools/modules/file_loader.py
@@ -7,7 +7,7 @@
 
 from cryptography.hazmat.primitives.serialization import load_pem_private_key, Encoding, PublicFormat
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 from os.path import splitext, isfile
 
 def _load_bin(filepath):
diff --git a/tools/modules/key_derivation.py b/tools/modules/key_derivation.py
index 07fc7d0..1885492 100644
--- a/tools/modules/key_derivation.py
+++ b/tools/modules/key_derivation.py
@@ -15,7 +15,7 @@
 import struct
 import argparse
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 
 def symmetric_kdf_sp800_108_cmac(input_key: bytes,
diff --git a/tools/modules/sign_data.py b/tools/modules/sign_data.py
index 7ef3cfb..7267348 100644
--- a/tools/modules/sign_data.py
+++ b/tools/modules/sign_data.py
@@ -17,7 +17,7 @@
 
 import argparse
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 from arg_utils import *
 
 def _asn1_sig_to_raw(sig : bytes , curve : ec.EllipticCurve) -> bytes:
@@ -156,7 +156,8 @@
     add_arguments(parser, required=True)
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
 
     config = parse_args(args)
     config |= parse_args_automatically(args, ["data"])
diff --git a/tools/modules/sign_then_encrypt_data.py b/tools/modules/sign_then_encrypt_data.py
index 7af18bb..fa77a82 100644
--- a/tools/modules/sign_then_encrypt_data.py
+++ b/tools/modules/sign_then_encrypt_data.py
@@ -9,7 +9,7 @@
 import argparse
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 import arg_utils
 import sign_data
@@ -90,4 +90,5 @@
     parser.add_argument("--log_level", help="log level", required=False, default="ERROR", choices=logging._levelToName.values())
 
     args = parser.parse_args()
-    logger.setLevel(args.log_level)
+    logging.getLogger("TF-M").setLevel(args.log_level)
+    logger.addHandler(logging.StreamHandler())
diff --git a/tools/modules/struct_pack.py b/tools/modules/struct_pack.py
index fae1b0b..d701eb1 100644
--- a/tools/modules/struct_pack.py
+++ b/tools/modules/struct_pack.py
@@ -8,7 +8,7 @@
 import struct
 
 import logging
-logger = logging.getLogger("TF-M")
+logger = logging.getLogger("TF-M.{}".format(__name__))
 
 def struct_pack(objects, pad_to=0):
     defstring = "<"