From 6d2bb53799d88ad84d7c5a016e17e3f706b61511 Mon Sep 17 00:00:00 2001 From: ddc Date: Sun, 20 Jul 2025 13:13:36 -0300 Subject: [PATCH] V4.0.5 --- .gitignore | 3 +++ poetry.lock | 2 +- pyproject.toml | 3 +-- pythonLogs/constants.py | 13 +++++++++++++ pythonLogs/log_utils.py | 14 ++------------ 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index da18491..85df18b 100755 --- a/.gitignore +++ b/.gitignore @@ -159,3 +159,6 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ /package-lock.json +/profile_fixed.prof +/profile_output.prof +/profile_pytest.prof diff --git a/poetry.lock b/poetry.lock index e85ef14..ac7a1ec 100644 --- a/poetry.lock +++ b/poetry.lock @@ -569,4 +569,4 @@ typing-extensions = ">=4.12.0" [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "12c2b54bc5df384ec52a9d28013534121f6dd11a5874ecbe9b428758e558688b" +content-hash = "1b58e2194b8ca5f7f291348a8dfbb2f7bf2b5eb0d781d0aee4955e482a159115" diff --git a/pyproject.toml b/pyproject.toml index 878b47b..b877d73 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "pythonLogs" -version = "4.0.4" +version = "4.0.5" description = "High-performance Python logging library with file rotation and optimized caching for better performance" license = "MIT" readme = "README.md" @@ -32,7 +32,6 @@ classifiers = [ [tool.poetry.dependencies] python = "^3.10" -pydantic = "^2.11.7" pydantic-settings = "^2.10.1" python-dotenv = "^1.1.1" diff --git a/pythonLogs/constants.py b/pythonLogs/constants.py index 5b5a252..f876d7f 100644 --- a/pythonLogs/constants.py +++ b/pythonLogs/constants.py @@ -1,4 +1,5 @@ # -*- encoding: utf-8 -*- +import logging from enum import Enum # File and Directory Constants @@ -40,3 +41,15 @@ class RotateWhen(str, Enum): SUNDAY = "W6" HOURLY = "H" DAILY = "D" + + +# Level mapping for performance optimization +LEVEL_MAP = { + LogLevel.DEBUG.value.lower(): logging.DEBUG, + LogLevel.WARNING.value.lower(): logging.WARNING, + LogLevel.WARN.value.lower(): logging.WARNING, + LogLevel.ERROR.value.lower(): logging.ERROR, + LogLevel.CRITICAL.value.lower(): logging.CRITICAL, + LogLevel.CRIT.value.lower(): logging.CRITICAL, + LogLevel.INFO.value.lower(): logging.INFO, +} diff --git a/pythonLogs/log_utils.py b/pythonLogs/log_utils.py index cdbc2e9..6e77160 100644 --- a/pythonLogs/log_utils.py +++ b/pythonLogs/log_utils.py @@ -12,7 +12,7 @@ from pathlib import Path from typing import Callable, Set from zoneinfo import ZoneInfo -from pythonLogs.constants import DEFAULT_FILE_MODE, LogLevel +from pythonLogs.constants import DEFAULT_FILE_MODE, LEVEL_MAP # Global cache for checked directories with thread safety and size limits @@ -182,17 +182,7 @@ def get_level(level: str) -> int: write_stderr(f"Unable to get log level. Setting default level to: 'INFO' ({logging.INFO})") return logging.INFO - level_map = { - LogLevel.DEBUG.value.lower(): logging.DEBUG, - LogLevel.WARNING.value.lower(): logging.WARNING, - LogLevel.WARN.value.lower(): logging.WARNING, - LogLevel.ERROR.value.lower(): logging.ERROR, - LogLevel.CRITICAL.value.lower(): logging.CRITICAL, - LogLevel.CRIT.value.lower(): logging.CRITICAL, - LogLevel.INFO.value.lower(): logging.INFO, - } - - return level_map.get(level.lower(), logging.INFO) + return LEVEL_MAP.get(level.lower(), logging.INFO) def get_log_path(directory: str, filename: str) -> str: