diff --git a/README.md b/README.md index d6e8c44..ed9eb2e 100644 --- a/README.md +++ b/README.md @@ -143,10 +143,11 @@ that modifies the list of available modules: ```Python from grimoiressg.modules import available_modules +from grimoiressg.utils import logger def test(data, context): - print("This is test module.") + logger.info("This is test module.") available_modules["test"] = test diff --git a/external_module_test/__init__.py b/external_module_test/__init__.py index 39d0ccc..5a59c42 100644 --- a/external_module_test/__init__.py +++ b/external_module_test/__init__.py @@ -1,8 +1,9 @@ from grimoiressg.modules import available_modules +from grimoiressg.utils import logger def test(data, context): - print("This is test module.") + logger.info("This is test module.") available_modules["test"] = test diff --git a/grimoiressg/__main__.py b/grimoiressg/__main__.py index 0b4004e..b8b38cb 100644 --- a/grimoiressg/__main__.py +++ b/grimoiressg/__main__.py @@ -1,14 +1,16 @@ +import logging + from grimoiressg.arguments import parse_arguments_to_initial_context from grimoiressg.config import read_config from grimoiressg.content_files import recursively_read_files from grimoiressg.modules import available_modules +from grimoiressg.utils import logger def apply_modules(data, config, context): for module in config.get("enabled_modules", []): - print(f"Applying module {module}...") + logger.info("Applying module %s...", module) available_modules[module](data, context) - print("") def main(): @@ -18,7 +20,8 @@ def main(): data = recursively_read_files(context) apply_modules(data, config, context) - print("Done.") + logger.info("Done.") + logging.shutdown() if __name__ == "__main__": diff --git a/grimoiressg/arguments.py b/grimoiressg/arguments.py index 86d74b7..a062299 100644 --- a/grimoiressg/arguments.py +++ b/grimoiressg/arguments.py @@ -1,5 +1,7 @@ import argparse +from grimoiressg.utils import logger + def parse_arguments_to_initial_context(): parser = argparse.ArgumentParser( @@ -21,11 +23,10 @@ def parse_arguments_to_initial_context(): "filenames": args.content_file } - print(f"Output directory: {context['output_dir']}") - print(f"Config file: {context['config_file']}") - print("Content files:") + logger.debug("Output directory: %s", context['output_dir']) + logger.debug("Config file: %s", context['config_file']) + logger.debug("Content files:") for filename in context["filenames"]: - print(f" - {filename}") - print() + logger.debug(" - %s", filename) return context diff --git a/grimoiressg/config.py b/grimoiressg/config.py index 512fade..ce4ebe4 100644 --- a/grimoiressg/config.py +++ b/grimoiressg/config.py @@ -1,7 +1,10 @@ +import logging + import yaml from yaml import Loader from grimoiressg.modules import available_modules, load_external_module +from grimoiressg.utils import logger def default_config(): @@ -18,24 +21,23 @@ def read_config(context): config_file = context.get("config_file", None) if not config_file: - print("No config file given; using default config") + logger.info("No config file given; using default config") config = default_config() else: - print("Loading config file...") + logger.info("Loading config file...") with open(config_file, "r") as file: config = yaml.load(file, Loader) or {} for module in config.get("load_modules", []): - print(f" Loading external module {module}") + logger.debug(" Loading external module %s", module) load_external_module(module) - print() - print("Enabled modules:") + logger.debug("Enabled modules:") for module in config.get("enabled_modules", []): - print(f" - {module}") + logger.debug(" - %s", module) if module not in available_modules: - print(f" ERROR: Module does not exist") + logger.critical("Module does not exist: %s", module) + logging.shutdown() exit(1) - print() return config diff --git a/grimoiressg/content_files.py b/grimoiressg/content_files.py index 0c3f299..854d6af 100644 --- a/grimoiressg/content_files.py +++ b/grimoiressg/content_files.py @@ -3,11 +3,11 @@ import os import yaml from yaml import Loader -from grimoiressg.utils.files import for_each_glob, to_relative +from grimoiressg.utils import logger, for_each_glob, to_relative def handle_file(filename): - print(f" Reading {to_relative(filename)}...") + logger.debug(" Reading %s...", to_relative(filename)) with open(filename, "r") as file: data = yaml.load(file, Loader) @@ -28,12 +28,11 @@ def handle_file(filename): def recursively_read_files(context): data = [] - print("Reading content files...") + logger.info("Reading content files...") for filename in context["filenames"]: data.extend(for_each_glob(filename, handle_file)) - print(f"Read {len(data)} files in total.") - print() + logger.info(f"Read %d files in total.", len(data)) return data diff --git a/grimoiressg/modules/markdown.py b/grimoiressg/modules/markdown.py index 8bbfca4..2202277 100644 --- a/grimoiressg/modules/markdown.py +++ b/grimoiressg/modules/markdown.py @@ -1,8 +1,10 @@ import markdown +from grimoiressg.utils import logger + def compile_markdown(data, context): for entry in data: if "markdown" in entry: - print(f"Compiling markdown for {entry['relative_filename']}...") + logger.debug("Compiling markdown for %s...", entry['relative_filename']) entry["markdown_compiled"] = markdown.markdown(entry["markdown"]) diff --git a/grimoiressg/modules/tags.py b/grimoiressg/modules/tags.py index 053f88c..1d63cf7 100644 --- a/grimoiressg/modules/tags.py +++ b/grimoiressg/modules/tags.py @@ -1,3 +1,5 @@ +from grimoiressg.utils import logger + def extract_tags(data, context): tags = {} @@ -9,10 +11,10 @@ def extract_tags(data, context): tags[tag] = entry_list if tags: - print("Found tags:") + logger.debug("Found tags:") for tag in tags.keys(): - print(f" - {tag} ({len(tags[tag])} files)") + logger.debug(" - %s (%d files)", tag, len(tags[tag])) else: - print("No tags found.") + logger.debug("No tags found.") context["tags"] = tags \ No newline at end of file diff --git a/grimoiressg/modules/templating.py b/grimoiressg/modules/templating.py index f7c875b..ef2e307 100644 --- a/grimoiressg/modules/templating.py +++ b/grimoiressg/modules/templating.py @@ -1,9 +1,9 @@ import os -from grimoiressg.utils import to_relative - from jinja2 import Environment, FileSystemLoader +from grimoiressg.utils import to_relative, logger + jinja_env = Environment( loader=FileSystemLoader("/") ) @@ -16,7 +16,7 @@ def render_templates(data, context): if "template" in entry: template_path = os.path.realpath(os.path.dirname(entry["filename"]) + "/" + entry["template"]) template_dir = os.path.dirname(template_path) - print(f"Rendering template for {entry['relative_filename']}...") + logger.debug("Rendering template for %s...", entry['relative_filename']) template = jinja_env.get_template(template_path) entry["rendered"] = template.render( **context, @@ -28,9 +28,9 @@ def render_templates(data, context): if "rendered" in entry and "output" in entry: files_written += 1 filename = os.path.realpath(context["output_dir"] + "/" + entry["output"]) - print(f" writing to {to_relative(filename)}") + logger.debug(" writing to %s", to_relative(filename)) os.makedirs(os.path.dirname(filename), exist_ok=True) with open(filename, "w") as file: file.write(entry["rendered"]) - print(f"{files_written} rendered") + logger.debug("%d rendered", files_written) diff --git a/grimoiressg/utils/__init__.py b/grimoiressg/utils/__init__.py index 96766ce..c90e260 100644 --- a/grimoiressg/utils/__init__.py +++ b/grimoiressg/utils/__init__.py @@ -1 +1,2 @@ -from .files import to_relative as to_relative +from .files import to_relative as to_relative, for_each_glob as for_each_glob +from .logger import logger as logger diff --git a/grimoiressg/utils/logger.py b/grimoiressg/utils/logger.py new file mode 100644 index 0000000..cae4f43 --- /dev/null +++ b/grimoiressg/utils/logger.py @@ -0,0 +1,5 @@ +import logging +import sys + +logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(asctime)s %(levelname)-9s: %(message)s") +logger = logging.getLogger("grimoire")