Updated docs
This commit is contained in:
		| @@ -1,21 +1,21 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| """ | ||||
| cpl-core sh-edraft Common Python library | ||||
| cpl-core CPL core | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| sh-edraft Common Python library | ||||
| CPL core package | ||||
|  | ||||
| :copyright: (c) 2020 - 2023 sh-edraft.de | ||||
| :license: MIT, see LICENSE for more details. | ||||
|  | ||||
| """ | ||||
|  | ||||
| __title__ = 'cpl_core.logging' | ||||
| __author__ = 'Sven Heidemann' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2020 - 2023 sh-edraft.de' | ||||
| __version__ = '2022.12.1' | ||||
| __title__ = "cpl_core.logging" | ||||
| __author__ = "Sven Heidemann" | ||||
| __license__ = "MIT" | ||||
| __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" | ||||
| __version__ = "2023.2.0" | ||||
|  | ||||
| from collections import namedtuple | ||||
|  | ||||
| @@ -27,5 +27,5 @@ from .logging_level_enum import LoggingLevelEnum | ||||
| from .logging_settings import LoggingSettings | ||||
| from .logging_settings_name_enum import LoggingSettingsNameEnum | ||||
|  | ||||
| VersionInfo = namedtuple('VersionInfo', 'major minor micro') | ||||
| version_info = VersionInfo(major='2022', minor='12', micro='1') | ||||
| VersionInfo = namedtuple("VersionInfo", "major minor micro") | ||||
| version_info = VersionInfo(major="2023", minor="2", micro="0") | ||||
|   | ||||
| @@ -12,8 +12,7 @@ class LoggerABC(ABC): | ||||
|     def header(self, string: str): | ||||
|         r"""Writes a header message | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             string: :class:`str` | ||||
|                 String to write as header | ||||
|         """ | ||||
| @@ -23,8 +22,7 @@ class LoggerABC(ABC): | ||||
|     def trace(self, name: str, message: str): | ||||
|         r"""Writes a trace message | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Message name | ||||
|             message: :class:`str` | ||||
| @@ -36,8 +34,7 @@ class LoggerABC(ABC): | ||||
|     def debug(self, name: str, message: str): | ||||
|         r"""Writes a debug message | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Message name | ||||
|             message: :class:`str` | ||||
| @@ -49,8 +46,7 @@ class LoggerABC(ABC): | ||||
|     def info(self, name: str, message: str): | ||||
|         r"""Writes an information | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Message name | ||||
|             message: :class:`str` | ||||
| @@ -62,8 +58,7 @@ class LoggerABC(ABC): | ||||
|     def warn(self, name: str, message: str): | ||||
|         r"""Writes an warning | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Message name | ||||
|             message: :class:`str` | ||||
| @@ -75,8 +70,7 @@ class LoggerABC(ABC): | ||||
|     def error(self, name: str, message: str, ex: Exception = None): | ||||
|         r"""Writes an error | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Error name | ||||
|             message: :class:`str` | ||||
| @@ -90,8 +84,7 @@ class LoggerABC(ABC): | ||||
|     def fatal(self, name: str, message: str, ex: Exception = None): | ||||
|         r"""Writes an error and ends the program | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Error name | ||||
|             message: :class:`str` | ||||
|   | ||||
| @@ -17,8 +17,7 @@ from cpl_core.time.time_format_settings import TimeFormatSettings | ||||
| class Logger(LoggerABC): | ||||
|     r"""Service for logging | ||||
|  | ||||
|     Parameter | ||||
|     --------- | ||||
|     Parameter: | ||||
|         logging_settings: :class:`cpl_core.logging.logging_settings.LoggingSettings` | ||||
|             Settings for the logger | ||||
|         time_format: :class:`cpl_core.time.time_format_settings.TimeFormatSettings` | ||||
| @@ -27,7 +26,9 @@ class Logger(LoggerABC): | ||||
|             Environment of the application | ||||
|     """ | ||||
|  | ||||
|     def __init__(self, logging_settings: LoggingSettings, time_format: TimeFormatSettings, env: ApplicationEnvironmentABC): | ||||
|     def __init__( | ||||
|         self, logging_settings: LoggingSettings, time_format: TimeFormatSettings, env: ApplicationEnvironmentABC | ||||
|     ): | ||||
|         LoggerABC.__init__(self) | ||||
|  | ||||
|         self._env = env | ||||
| @@ -48,7 +49,7 @@ class Logger(LoggerABC): | ||||
|             date_time_now=self._env.date_time_now.strftime(self._time_format_settings.date_time_format), | ||||
|             date_now=self._env.date_time_now.strftime(self._time_format_settings.date_format), | ||||
|             time_now=self._env.date_time_now.strftime(self._time_format_settings.time_format), | ||||
|             start_time=self._env.start_time.strftime(self._time_format_settings.date_time_log_format) | ||||
|             start_time=self._env.start_time.strftime(self._time_format_settings.date_time_log_format), | ||||
|         ) | ||||
|  | ||||
|     @property | ||||
| @@ -57,38 +58,36 @@ class Logger(LoggerABC): | ||||
|             date_time_now=self._env.date_time_now.strftime(self._time_format_settings.date_time_format), | ||||
|             date_now=self._env.date_time_now.strftime(self._time_format_settings.date_format), | ||||
|             time_now=self._env.date_time_now.strftime(self._time_format_settings.time_format), | ||||
|             start_time=self._env.start_time.strftime(self._time_format_settings.date_time_log_format) | ||||
|             start_time=self._env.start_time.strftime(self._time_format_settings.date_time_log_format), | ||||
|         ) | ||||
|  | ||||
|     def _check_for_settings(self, settings: ConfigurationModelABC, settings_type: type): | ||||
|         self._level = LoggingLevelEnum.OFF | ||||
|         self._console = LoggingLevelEnum.FATAL | ||||
|         if settings is None: | ||||
|             self.fatal(__name__, f'Configuration for {settings_type} not found') | ||||
|             self.fatal(__name__, f"Configuration for {settings_type} not found") | ||||
|  | ||||
|     def _get_datetime_now(self) -> str: | ||||
|         r"""Returns the date and time by given format | ||||
|  | ||||
|         Returns | ||||
|         ------- | ||||
|         Returns: | ||||
|             Date and time in given format | ||||
|         """ | ||||
|         try: | ||||
|             return datetime.datetime.now().strftime(self._time_format_settings.date_time_format) | ||||
|         except Exception as e: | ||||
|             self.error(__name__, 'Cannot get time', ex=e) | ||||
|             self.error(__name__, "Cannot get time", ex=e) | ||||
|  | ||||
|     def _get_date(self) -> str: | ||||
|         r"""Returns the date by given format | ||||
|  | ||||
|         Returns | ||||
|         ------- | ||||
|         Returns: | ||||
|             Date in given format | ||||
|         """ | ||||
|         try: | ||||
|             return datetime.datetime.now().strftime(self._time_format_settings.date_format) | ||||
|         except Exception as e: | ||||
|             self.error(__name__, 'Cannot get date', ex=e) | ||||
|             self.error(__name__, "Cannot get date", ex=e) | ||||
|  | ||||
|     def create(self) -> None: | ||||
|         r"""Creates path tree and logfile""" | ||||
| @@ -99,46 +98,44 @@ class Logger(LoggerABC): | ||||
|             if not os.path.exists(self._path): | ||||
|                 os.makedirs(self._path) | ||||
|         except Exception as e: | ||||
|             self._fatal_console(__name__, 'Cannot create log dir', ex=e) | ||||
|             self._fatal_console(__name__, "Cannot create log dir", ex=e) | ||||
|  | ||||
|         """ create new log file """ | ||||
|         try: | ||||
|             # open log file, create if not exists | ||||
|             path = f'{self._path}{self._log}' | ||||
|             permission = 'a+' | ||||
|             path = f"{self._path}{self._log}" | ||||
|             permission = "a+" | ||||
|             if not os.path.isfile(path): | ||||
|                 permission = 'w+' | ||||
|                 permission = "w+" | ||||
|  | ||||
|             f = open(path, permission) | ||||
|             Console.write_line(f'[{__name__}]: Using log file: {path}') | ||||
|             Console.write_line(f"[{__name__}]: Using log file: {path}") | ||||
|             f.close() | ||||
|         except Exception as e: | ||||
|             self._fatal_console(__name__, 'Cannot open log file', ex=e) | ||||
|             self._fatal_console(__name__, "Cannot open log file", ex=e) | ||||
|  | ||||
|     def _append_log(self, string: str): | ||||
|         r"""Writes to logfile | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             string: :class:`str` | ||||
|         """ | ||||
|         try: | ||||
|             # open log file and append always | ||||
|             if not os.path.isdir(self._path): | ||||
|                 self._warn_console(__name__, 'Log directory not found, try to recreate logger') | ||||
|                 self._warn_console(__name__, "Log directory not found, try to recreate logger") | ||||
|                 self.create() | ||||
|  | ||||
|             with open(self._path + self._log, "a+", encoding="utf-8") as f: | ||||
|                 f.write(string + '\n') | ||||
|                 f.write(string + "\n") | ||||
|                 f.close() | ||||
|         except Exception as e: | ||||
|             self._fatal_console(__name__, f'Cannot append log file, message: {string}', ex=e) | ||||
|             self._fatal_console(__name__, f"Cannot append log file, message: {string}", ex=e) | ||||
|  | ||||
|     def _get_string(self, name: str, level: LoggingLevelEnum, message: str) -> str: | ||||
|         r"""Returns input as log entry format | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Name of the message | ||||
|             level: :class:`cpl_core.logging.logging_level_enum.LoggingLevelEnum` | ||||
| @@ -146,12 +143,11 @@ class Logger(LoggerABC): | ||||
|             message: :class:`str` | ||||
|                 Log message | ||||
|  | ||||
|         Returns | ||||
|         ------- | ||||
|         Returns: | ||||
|             Formatted string for logging | ||||
|         """ | ||||
|         log_level = level.name | ||||
|         return f'<{self._get_datetime_now()}> [ {log_level} ] [ {name} ]: {message}' | ||||
|         return f"<{self._get_datetime_now()}> [ {log_level} ] [ {name} ]: {message}" | ||||
|  | ||||
|     def header(self, string: str): | ||||
|         # append log and print message | ||||
| @@ -213,11 +209,11 @@ class Logger(LoggerABC): | ||||
|             Console.set_foreground_color(ForegroundColorEnum.default) | ||||
|  | ||||
|     def error(self, name: str, message: str, ex: Exception = None): | ||||
|         output = '' | ||||
|         output = "" | ||||
|         if ex is not None: | ||||
|             tb = traceback.format_exc() | ||||
|             self.error(name, message) | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, f'{ex} -> {tb}') | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, f"{ex} -> {tb}") | ||||
|         else: | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, message) | ||||
|  | ||||
| @@ -232,11 +228,11 @@ class Logger(LoggerABC): | ||||
|             Console.set_foreground_color(ForegroundColorEnum.default) | ||||
|  | ||||
|     def fatal(self, name: str, message: str, ex: Exception = None): | ||||
|         output = '' | ||||
|         output = "" | ||||
|         if ex is not None: | ||||
|             tb = traceback.format_exc() | ||||
|             self.error(name, message) | ||||
|             output = self._get_string(name, LoggingLevelEnum.FATAL, f'{ex} -> {tb}') | ||||
|             output = self._get_string(name, LoggingLevelEnum.FATAL, f"{ex} -> {tb}") | ||||
|         else: | ||||
|             output = self._get_string(name, LoggingLevelEnum.FATAL, message) | ||||
|  | ||||
| @@ -255,8 +251,7 @@ class Logger(LoggerABC): | ||||
|     def _warn_console(self, name: str, message: str): | ||||
|         r"""Writes a warning to console only | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Error name | ||||
|             message: :class:`str` | ||||
| @@ -271,8 +266,7 @@ class Logger(LoggerABC): | ||||
|     def _fatal_console(self, name: str, message: str, ex: Exception = None): | ||||
|         r"""Writes an error to console only | ||||
|  | ||||
|         Parameter | ||||
|         --------- | ||||
|         Parameter: | ||||
|             name: :class:`str` | ||||
|                 Error name | ||||
|             message: :class:`str` | ||||
| @@ -280,11 +274,11 @@ class Logger(LoggerABC): | ||||
|             ex: :class:`Exception` | ||||
|                 Thrown exception | ||||
|         """ | ||||
|         output = '' | ||||
|         output = "" | ||||
|         if ex is not None: | ||||
|             tb = traceback.format_exc() | ||||
|             self.error(name, message) | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, f'{ex} -> {tb}') | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, f"{ex} -> {tb}") | ||||
|         else: | ||||
|             output = self._get_string(name, LoggingLevelEnum.ERROR, message) | ||||
|  | ||||
|   | ||||
| @@ -2,11 +2,10 @@ from enum import Enum | ||||
|  | ||||
|  | ||||
| class LoggingLevelEnum(Enum): | ||||
|  | ||||
|     OFF = 0         # Nothing | ||||
|     FATAL = 1       # Error that cause exit | ||||
|     ERROR = 2       # Non fatal error | ||||
|     WARN = 3        # Error that can later be fatal | ||||
|     INFO = 4        # Normal information's | ||||
|     DEBUG = 5       # Detailed app state | ||||
|     TRACE = 6       # Detailed app information's | ||||
|     OFF = 0  # Nothing | ||||
|     FATAL = 1  # Error that cause exit | ||||
|     ERROR = 2  # Non fatal error | ||||
|     WARN = 3  # Error that can later be fatal | ||||
|     INFO = 4  # Normal information's | ||||
|     DEBUG = 5  # Detailed app state | ||||
|     TRACE = 6  # Detailed app information's | ||||
|   | ||||
| @@ -58,6 +58,6 @@ class LoggingSettings(ConfigurationModelABC): | ||||
|             self._level = LoggingLevelEnum[settings[LoggingSettingsNameEnum.file_level.value]] | ||||
|         except Exception as e: | ||||
|             Console.set_foreground_color(ForegroundColorEnum.red) | ||||
|             Console.write_line(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings') | ||||
|             Console.write_line(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') | ||||
|             Console.write_line(f"[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings") | ||||
|             Console.write_line(f"[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}") | ||||
|             Console.set_foreground_color(ForegroundColorEnum.default) | ||||
|   | ||||
| @@ -2,8 +2,7 @@ from enum import Enum | ||||
|  | ||||
|  | ||||
| class LoggingSettingsNameEnum(Enum): | ||||
|  | ||||
|     path = 'Path' | ||||
|     filename = 'Filename' | ||||
|     console_level = 'ConsoleLogLevel' | ||||
|     file_level = 'FileLogLevel' | ||||
|     path = "Path" | ||||
|     filename = "Filename" | ||||
|     console_level = "ConsoleLogLevel" | ||||
|     file_level = "FileLogLevel" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user