Newer
Older
NewLang / src / log.py
# SPDX-License-Identifier: LGPL-2.1-only
# Copyright 2022 Jookia <contact@jookia.org>

LEXER = 0
PARSER = 1

NORMAL = 0  # messages always shown
DEBUG = 1  # high-level information about what's happening
TRACE = 2  # trace output

log_level = 0


def log(module, level, text):
    if level > log_level:
        return

    if module == LEXER:
        module_name = "LEXER"
    elif module == PARSER:
        module_name = "PARSER"
    else:
        module_name = "UNKNOWN"

    if level == NORMAL:
        level_name = "NORMAL"
    elif level == DEBUG:
        level_name = "DEBUG"
    elif level == TRACE:
        level_name = "TRACE"
    else:
        level_name = "UNKNOWN"

    print("%s %s: %s" % (level_name, module_name, text))


def set_default_log_level(level):
    global log_level
    if not level or level == "NORMAL":
        log_level = 0
    elif level == "DEBUG":
        log_level = 1
    elif level == "TRACE":
        log_level = 2
    else:
        print("ERROR: Unknown log level %s" % (level))