#2470: implementing log levels into sys log

This commit is contained in:
Czar Echavez
2024-04-17 18:13:00 +01:00
parent 137a203acc
commit b57deaf9e1
3 changed files with 184 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
"""Warning: SIM_OUTPUT is a mutable global variable for the simulation output directory."""
from datetime import datetime
from enum import Enum
from pathlib import Path
from primaite import _PRIMAITE_ROOT
@@ -7,6 +8,23 @@ from primaite import _PRIMAITE_ROOT
__all__ = ["SIM_OUTPUT"]
class LogLevel(Enum):
"""Enum containing all the available log levels for PrimAITE simulation output."""
OFF = 999
"""No logs will be output to terminal or log file."""
DEBUG = 1
"""Debug items will be output to terminal or log file."""
INFO = 2
"""Info items will be output to terminal or log file."""
WARNING = 3
"""Warnings will be output to terminal or log file."""
ERROR = 4
"""Errors will be output to terminal or log file."""
CRITICAL = 5
"""Critical errors will be output to terminal or log file."""
class _SimOutput:
def __init__(self):
self._path: Path = (
@@ -15,6 +33,7 @@ class _SimOutput:
self.save_pcap_logs: bool = False
self.save_sys_logs: bool = False
self.write_sys_log_to_terminal: bool = False
self.log_level: LogLevel = LogLevel.INFO # default log level is at INFO
@property
def path(self) -> Path:

View File

@@ -3,7 +3,7 @@ from pathlib import Path
from prettytable import MARKDOWN, PrettyTable
from primaite.simulator import SIM_OUTPUT
from primaite.simulator import LogLevel, SIM_OUTPUT
class _NotJSONFilter(logging.Filter):
@@ -99,6 +99,9 @@ class SysLog:
:param msg: The message to be logged.
:param to_terminal: If True, prints to the terminal too.
"""
if SIM_OUTPUT.log_level.value > LogLevel.DEBUG.value:
return
if SIM_OUTPUT.save_sys_logs:
self.logger.debug(msg)
self._write_to_terminal(msg, "DEBUG", to_terminal)
@@ -110,6 +113,9 @@ class SysLog:
:param msg: The message to be logged.
:param to_terminal: If True, prints to the terminal too.
"""
if SIM_OUTPUT.log_level.value > LogLevel.INFO.value:
return
if SIM_OUTPUT.save_sys_logs:
self.logger.info(msg)
self._write_to_terminal(msg, "INFO", to_terminal)
@@ -121,6 +127,9 @@ class SysLog:
:param msg: The message to be logged.
:param to_terminal: If True, prints to the terminal too.
"""
if SIM_OUTPUT.log_level.value > LogLevel.WARNING.value:
return
if SIM_OUTPUT.save_sys_logs:
self.logger.warning(msg)
self._write_to_terminal(msg, "WARNING", to_terminal)
@@ -132,6 +141,9 @@ class SysLog:
:param msg: The message to be logged.
:param to_terminal: If True, prints to the terminal too.
"""
if SIM_OUTPUT.log_level.value > LogLevel.ERROR.value:
return
if SIM_OUTPUT.save_sys_logs:
self.logger.error(msg)
self._write_to_terminal(msg, "ERROR", to_terminal)
@@ -143,6 +155,9 @@ class SysLog:
:param msg: The message to be logged.
:param to_terminal: If True, prints to the terminal too.
"""
if LogLevel.CRITICAL.value < SIM_OUTPUT.log_level.value:
return
if SIM_OUTPUT.save_sys_logs:
self.logger.critical(msg)
self._write_to_terminal(msg, "CRITICAL", to_terminal)