"console_format_type" with "normal", "condensed", "minimal" options This sets the format of the console output, controlling the amount of detail shown. normal show log title, file, function and line number condensed show file and line number only minimal shows only timestamp, log level and message Default is normal "console_iso_precision" with "seconds", "milliseconds", "microseconds" options This sets the precision of the ISO timestamp in console logs. Default is milliseconds The timestamp output is now ISO8601 formatatted with time zone.
110 lines
4.8 KiB
Python
110 lines
4.8 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, CONSOLE_FORMAT_TYPE_MINIMAL, CONSOLE_ISO_TIME_MICROSECONDS
|
|
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,
|
|
# Set console log type
|
|
"console_format_type": CONSOLE_FORMAT_TYPE_MINIMAL,
|
|
"console_iso_precision": CONSOLE_ISO_TIME_MICROSECONDS,
|
|
}
|
|
)
|
|
logn = Logger(log.get_logger_settings())
|
|
|
|
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('stream_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.handlers['stream_handler'].se
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
# __END__
|