Also add prefix "[SettingsLoader] " to print statements in SettingsLoader if we do not write to log
143 lines
7.0 KiB
Python
143 lines
7.0 KiB
Python
"""
|
|
Log logging_handling.log testing
|
|
"""
|
|
|
|
# import atexit
|
|
import sys
|
|
from pathlib import Path
|
|
# this is for testing only
|
|
from corelibs.logging_handling.log import Log, Logger, ConsoleFormat, ConsoleFormatSettings
|
|
from corelibs.debug_handling.debug_helpers import exception_stack, call_stack
|
|
from corelibs.logging_handling.logging_level_handling.logging_level import LoggingLevel
|
|
|
|
|
|
def main():
|
|
"""
|
|
Log testing
|
|
"""
|
|
script_path: Path = Path(__file__).resolve().parent
|
|
log = Log(
|
|
log_path=script_path.joinpath('log', 'test.log'),
|
|
log_name="Test Log",
|
|
log_settings={
|
|
"log_level_console": 'DEBUG',
|
|
# "log_level_console": None,
|
|
"log_level_file": 'DEBUG',
|
|
# "console_color_output_enabled": False,
|
|
"per_run_log": True,
|
|
# "console_format_type": ConsoleFormatSettings.NONE,
|
|
# "console_format_type": ConsoleFormatSettings.MINIMAL,
|
|
# "console_format_type": ConsoleFormat.TIME_MICROSECONDS | ConsoleFormat.NAME | ConsoleFormat.LEVEL,
|
|
"console_format_type": None,
|
|
# "console_format_type": ConsoleFormat.NAME,
|
|
# "console_format_type": (
|
|
# ConsoleFormat.TIME | ConsoleFormat.TIMEZONE | ConsoleFormat.LINENO | ConsoleFormat.LEVEL
|
|
# ),
|
|
}
|
|
)
|
|
logn = Logger(log.get_logger_settings())
|
|
|
|
log.info("ConsoleFormatType FILE is: %s", ConsoleFormat.FILE)
|
|
log.info("ConsoleFormatSettings ALL is: %s", ConsoleFormatSettings.ALL)
|
|
log.info("ConsoleFormatSettings lookup is: %s", ConsoleFormatSettings.from_string('ALL'))
|
|
|
|
log.logger.debug('[NORMAL] Debug test: %s', log.logger.name)
|
|
log.lg.debug('[NORMAL] Debug test: %s', log.logger.name)
|
|
log.debug('[NORMAL-] Debug test: %s', log.logger.name)
|
|
logn.lg.debug('[NORMAL N] Debug test: %s', log.logger.name)
|
|
logn.debug('[NORMAL N-] Debug test: %s', log.logger.name)
|
|
log.logger.info('[NORMAL] Info test: %s', log.logger.name)
|
|
log.info('[NORMAL-] Info test: %s', log.logger.name)
|
|
log.logger.warning('[NORMAL] Warning test: %s', log.logger.name)
|
|
log.warning('[NORMAL-] Warning test: %s', log.logger.name)
|
|
log.logger.error('[NORMAL] Error test: %s', log.logger.name)
|
|
log.error('[NORMAL-] Error test: %s', log.logger.name)
|
|
log.logger.critical('[NORMAL] Critical test: %s', log.logger.name)
|
|
log.critical('[NORMAL-] Critical test: %s', log.logger.name)
|
|
log.logger.log(LoggingLevel.ALERT.value, '[NORMAL] alert test: %s', log.logger.name)
|
|
log.alert('[NORMAL-] alert test: %s', log.logger.name)
|
|
log.emergency('[NORMAL-] emergency test: %s', log.logger.name)
|
|
log.logger.log(LoggingLevel.EMERGENCY.value, '[NORMAL] emergency test: %s', log.logger.name)
|
|
log.exception('[NORMAL] Exception test: %s', log.logger.name)
|
|
log.logger.log(LoggingLevel.EXCEPTION.value, '[NORMAL] exception test: %s', log.logger.name, exc_info=True)
|
|
|
|
bad_level = 'WRONG'
|
|
if not Log.validate_log_level(bad_level):
|
|
print(f"Invalid level: {bad_level}")
|
|
good_level = 'WARNING'
|
|
if Log.validate_log_level(good_level):
|
|
print(f"Valid level: {good_level}")
|
|
|
|
print(f"ERROR is to_logging_level(): {LoggingLevel.ERROR.to_logging_level()}")
|
|
print(f"ERROR is to_lower_case(): {LoggingLevel.ERROR.to_lower_case()}")
|
|
print(f"ERROR is: {LoggingLevel.ERROR}")
|
|
print(f"ERROR is value: {LoggingLevel.ERROR.value}")
|
|
print(f"ERROR is name: {LoggingLevel.ERROR.name}")
|
|
print(f"ERROR is from_string(lower): {LoggingLevel.from_string('ERROR')}")
|
|
print(f"ERROR is from_string(upper): {LoggingLevel.from_string('ERROR')}")
|
|
print(f"ERROR is from_int: {LoggingLevel.from_int(40)}")
|
|
print(f"ERROR is from_any(text lower): {LoggingLevel.from_any('ERROR')}")
|
|
print(f"ERROR is from_any(text upper): {LoggingLevel.from_any('ERROR')}")
|
|
print(f"ERROR is from_any(int): {LoggingLevel.from_any(40)}")
|
|
print(f"INFO <= ERROR: {LoggingLevel.INFO.includes(LoggingLevel.ERROR)}")
|
|
print(f"INFO > ERROR: {LoggingLevel.INFO.is_higher_than(LoggingLevel.ERROR)}")
|
|
print(f"INFO < ERROR: {LoggingLevel.INFO.is_lower_than(LoggingLevel.ERROR)}")
|
|
print(f"INFO < ERROR: {LoggingLevel.INFO.is_lower_than(LoggingLevel.ERROR)}")
|
|
|
|
try:
|
|
print(f"INVALID is A: {LoggingLevel.from_string('INVALID')}")
|
|
except ValueError as e:
|
|
print(f"* ERROR: {e}")
|
|
|
|
try:
|
|
__test = 5 / 0
|
|
print(f"Divied: {__test}")
|
|
except ZeroDivisionError as e:
|
|
print(f"** sys.exec_info(): {sys.exc_info()}")
|
|
print(f"** sys.exec_info(): [{exception_stack()}] | [{exception_stack(sys.exc_info())}] | [{call_stack()}]")
|
|
log.logger.critical("Divison through zero: %s", e)
|
|
log.exception("Divison through zero: %s", e)
|
|
|
|
for handler in log.logger.handlers:
|
|
print(
|
|
f"** Handler (logger) {handler} [{handler.name}] -> "
|
|
f"{handler.level} -> {LoggingLevel.from_any(handler.level)}"
|
|
)
|
|
|
|
for key, handler in log.handlers.items():
|
|
print(f"Handler (handlers) [{key}] {handler} -> {handler.level} -> {LoggingLevel.from_any(handler.level)}")
|
|
log.set_log_level(Log.CONSOLE_HANDLER, LoggingLevel.ERROR)
|
|
log.logger.warning('[NORMAL] Invisible Warning test: %s', log.logger.name)
|
|
log.logger.error('[NORMAL] Visible Error test: %s', log.logger.name)
|
|
log.logger.debug('[NORMAL] Visible Debug test: %s', log.logger.name)
|
|
print(f"*** Any handler is minimum level ERROR: {log.any_handler_is_minimum_level(LoggingLevel.ERROR)}")
|
|
print(f"*** Any handler is minimum level DEBUG: {log.any_handler_is_minimum_level(LoggingLevel.DEBUG)}")
|
|
for handler in log.handlers.values():
|
|
print(
|
|
f"*** Setting handler {handler} is level {LoggingLevel.from_any(handler.level).name} -> "
|
|
f"*** INC {LoggingLevel.from_any(handler.level).includes(LoggingLevel.DEBUG)}")
|
|
|
|
print(f"*** WARNING includes ERROR: {LoggingLevel.WARNING.includes(LoggingLevel.ERROR)}")
|
|
print(f"*** ERROR includes WARNING: {LoggingLevel.ERROR.includes(LoggingLevel.WARNING)}")
|
|
|
|
log.set_log_level(Log.CONSOLE_HANDLER, LoggingLevel.DEBUG)
|
|
log.debug('Current logging format: %s', log.log_settings['console_format_type'])
|
|
log.debug('Current console formatter: %s', log.get_console_formatter())
|
|
log.update_console_formatter(ConsoleFormat.TIME | ConsoleFormat.LINENO)
|
|
log.info('Does hit show less A')
|
|
log.debug('Current console formatter after A: %s', log.get_console_formatter())
|
|
log.update_console_formatter(ConsoleFormat.TIME | ConsoleFormat.LINENO)
|
|
log.info('Does hit show less B')
|
|
log.debug('Current console formatter after B: %s', log.get_console_formatter())
|
|
log.update_console_formatter(ConsoleFormatSettings.ALL)
|
|
log.info('Does hit show less C')
|
|
log.debug('Current console formatter after C: %s', log.get_console_formatter())
|
|
print(f"*** Any handler is minimum level ERROR: {log.any_handler_is_minimum_level(LoggingLevel.ERROR)}")
|
|
print(f"*** Any handler is minimum level DEBUG: {log.any_handler_is_minimum_level(LoggingLevel.DEBUG)}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# __END__
|