diff --git a/pbp/logging_helper.py b/pbp/logging_helper.py index 5c8ff65..0ad343f 100644 --- a/pbp/logging_helper.py +++ b/pbp/logging_helper.py @@ -45,3 +45,27 @@ def create_logger( ) return log + + +def create_logger_info(log_filename: str): + """ + Create a logger with INFO level for console and file and simple format (no log level). + Also logs to a file all messages at DEBUG level and above. + Best used for scripts that don't need DEBUG level logging to the console. + :param log_filename: + The name of the log file to create + """ + loguru.logger.remove() + log = copy.deepcopy(loguru.logger) + info_format = "{message}" + default_format = "{time} {level} {message}" + log.add( + sys.stdout, + level="INFO", + format=info_format, + filter=lambda record: record["level"].name == "INFO", + ) + log.add( + sink=open(log_filename, "w"), level="DEBUG", format=default_format, enqueue=True + ) + return log \ No newline at end of file diff --git a/pbp/main_meta_generator.py b/pbp/main_meta_generator.py index a1273ec..c6f6485 100644 --- a/pbp/main_meta_generator.py +++ b/pbp/main_meta_generator.py @@ -1,15 +1,14 @@ import os from datetime import datetime from pathlib import Path -import loguru -import sys -import copy +from pbp.logging_helper import create_logger_info from pbp.meta_gen.gen_nrs import NRSMetadataGenerator from pbp.meta_gen.gen_iclisten import IcListenMetadataGenerator from pbp.meta_gen.gen_soundtrap import SoundTrapMetadataGenerator from pbp.main_meta_generator_args import parse_arguments + # Some imports, in particular involving data processing, cause a delay that is # noticeable when just running the --help option. We get around this issue by # postponing the imports until actually needed. See the main() function. @@ -18,21 +17,6 @@ def main(): opts = parse_arguments() - loguru.logger.remove() - log = copy.deepcopy(loguru.logger) - info_format = "{message}" - default_format = "{time} {level} {message}" - log_filename = (f"{opts.output_dir}/{opts.recorder}{opts.start}_{opts.end}.log",) - log.add( - sys.stdout, - level="INFO", - format=info_format, - filter=lambda record: record["level"].name == "INFO", - ) - log.add( - sink=open(log_filename, "w"), level="DEBUG", format=default_format, enqueue=True - ) - log_dir = Path(opts.output_dir) json_dir = Path(opts.json_base_dir) if opts.xml_dir is None: @@ -49,6 +33,8 @@ def main(): start = datetime.strptime(opts.start, "%Y%m%d") end = datetime.strptime(opts.end, "%Y%m%d") + log = create_logger_info(f"{opts.output_dir}/{opts.recorder}{opts.start}_{opts.end}.log") + try: if opts.recorder == "NRS": generator = NRSMetadataGenerator(