VersaLog 2.5.3__tar.gz → 2.5.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: VersaLog
3
- Version: 2.5.3
3
+ Version: 2.5.5
4
4
  Summary: Versatile logging library.
5
5
  Home-page:
6
6
  Author:
@@ -1,9 +1,10 @@
1
1
  from .core import VersaLog
2
+ from .handler import VersaLogHandler
2
3
  from .integrations.fastapi import setup_fastapi_logging
3
4
 
4
5
  __copyright__ = "Copyright 2025 by Kayu0514"
5
- __version__ = "2.5.3"
6
+ __version__ = "2.5.5"
6
7
  __author__ = "Kayu0514"
7
8
  __url__ = "https://github.com/kayu0514"
8
9
 
9
- __all__ = ["VersaLog", "setup_fastapi_logging"]
10
+ __all__ = ["VersaLog", "VersaLogHandler", "setup_fastapi_logging"]
@@ -87,7 +87,7 @@ class VersaLog:
87
87
  if self.save_levels is None:
88
88
  self.save_levels = self.valid_save_levels.copy()
89
89
  elif not isinstance(self.save_levels, list):
90
- raise ValueError(f"save_levels must be a list. Example: ['ERROR']")
90
+ raise ValueError("save_levels must be a list. Example: ['ERROR']")
91
91
  elif not all(level in self.valid_save_levels for level in self.save_levels):
92
92
  raise ValueError(f"Invalid save_levels specified. Valid levels are: {', '.join(self.valid_save_levels)}")
93
93
 
@@ -179,42 +179,39 @@ class VersaLog:
179
179
  tags = [final_tag] if final_tag else []
180
180
  else:
181
181
  tags = []
182
- tag_str = "".join(f"[{t}]" for t in tags) if tags else ""
182
+ tag_str = "".join(f"[{t}]" for t in tags)
183
183
 
184
184
  caller = self._GetCaller() if self.show_file or self.enum == "file" else ""
185
185
 
186
186
  if self.enum == "simple":
187
187
  symbol = self.SYMBOLS.get(tye, "[?]")
188
188
  if self.show_file:
189
- formatted = f"[{caller}]{tag_str}{colors}{symbol}{self.RESET} {msg}" if tag_str else f"[{caller}]{colors}{symbol}{self.RESET} {msg}"
190
- plain = f"[{caller}]{tag_str}{symbol} {msg}" if tag_str else f"[{caller}]{symbol} {msg}"
189
+ # tag_str is empty string if no tags, otherwise formatted as "[tag1][tag2]..."
190
+ formatted = f"[{caller}]{tag_str}{colors}{symbol}{self.RESET} {msg}"
191
+ plain = f"[{caller}]{tag_str}{symbol} {msg}"
191
192
  else:
192
- formatted = f"{tag_str}{colors}{symbol}{self.RESET} {msg}" if tag_str else f"{colors}{symbol}{self.RESET} {msg}"
193
- plain = f"{tag_str}{symbol} {msg}" if tag_str else f"{symbol} {msg}"
193
+ formatted = f"{tag_str}{colors}{symbol}{self.RESET} {msg}"
194
+ plain = f"{tag_str}{symbol} {msg}"
194
195
 
195
196
  elif self.enum == "simple2":
196
197
  symbol = self.SYMBOLS.get(tye, "[?]")
197
198
  time = self._GetTime()
198
199
  if self.show_file:
199
- formatted = f"[{time}] [{caller}]{tag_str}{colors}{symbol}{self.RESET} {msg}" if tag_str else f"[{time}] [{caller}]{colors}{symbol}{self.RESET} {msg}"
200
- plain = f"[{time}] [{caller}]{tag_str}{symbol} {msg}" if tag_str else f"[{time}] [{caller}]{symbol} {msg}"
200
+ formatted = f"[{time}] [{caller}]{tag_str}{colors}{symbol}{self.RESET} {msg}"
201
+ plain = f"[{time}] [{caller}]{tag_str}{symbol} {msg}"
201
202
  else:
202
- formatted = f"[{time}] {tag_str}{colors}{symbol}{self.RESET} {msg}" if tag_str else f"[{time}] {colors}{symbol}{self.RESET} {msg}"
203
- plain = f"[{time}] {tag_str}{symbol} {msg}" if tag_str else f"[{time}] {symbol} {msg}"
203
+ formatted = f"[{time}] {tag_str}{colors}{symbol}{self.RESET} {msg}"
204
+ plain = f"[{time}] {tag_str}{symbol} {msg}"
204
205
 
205
206
  elif self.enum == "file":
206
- formatted = f"[{caller}]{tag_str}{colors}[{types}]{self.RESET} {msg}" if tag_str else f"[{caller}]{colors}[{types}]{self.RESET} {msg}"
207
- plain = f"[{caller}]{tag_str}[{types}] {msg}" if tag_str else f"[{caller}][{types}] {msg}"
207
+ formatted = f"[{caller}]{tag_str}{colors}[{types}]{self.RESET} {msg}"
208
+ plain = f"[{caller}]{tag_str}[{types}] {msg}"
208
209
 
209
210
  else: # detailed
210
211
  time = self._GetTime()
211
- formatted = f"[{time}]{colors}[{types}]{self.RESET}{tag_str}" if tag_str else f"[{time}]{colors}[{types}]{self.RESET}"
212
- plain = f"[{time}][{types}]{tag_str}" if tag_str else f"[{time}][{types}]"
213
- if self.show_file:
214
- formatted += f"[{caller}]"
215
- plain += f"[{caller}]"
216
- formatted += f" : {msg}"
217
- plain += f" : {msg}"
212
+ caller_part = f"[{caller}]" if self.show_file else ""
213
+ formatted = f"[{time}]{colors}[{types}]{self.RESET}{tag_str}{caller_part} : {msg}"
214
+ plain = f"[{time}][{types}]{tag_str}{caller_part} : {msg}"
218
215
 
219
216
  if not self.silent:
220
217
  print(formatted)
@@ -0,0 +1,16 @@
1
+ import logging
2
+
3
+ class VersaLogHandler(logging.Handler):
4
+ def __init__(self, versalog):
5
+ super().__init__()
6
+ self.versalog = versalog
7
+
8
+ def emit(self, record):
9
+ msg = record.getMessage()
10
+
11
+ if record.levelno >= logging.ERROR:
12
+ self.versalog.error(msg)
13
+ elif record.levelno == logging.DEBUG:
14
+ self.versalog.debug(msg)
15
+ else:
16
+ self.versalog.info(msg)
@@ -1,14 +1,9 @@
1
1
  import logging
2
2
  from ..handler import VersaLogHandler
3
3
 
4
-
5
4
  def setup_fastapi_logging(versalog):
6
5
  handler = VersaLogHandler(versalog)
7
6
 
8
- handler.setFormatter(
9
- logging.Formatter("[%(asctime)s][%(levelname)s] %(message)s")
10
- )
11
-
12
7
  root = logging.getLogger()
13
8
 
14
9
  for h in root.handlers[:]:
@@ -17,17 +12,11 @@ def setup_fastapi_logging(versalog):
17
12
  root.setLevel(logging.NOTSET)
18
13
  root.addHandler(handler)
19
14
 
20
- for name in [
21
- "uvicorn",
22
- "uvicorn.error",
23
- "uvicorn.access",
24
- "asyncio"
25
- ]:
15
+ for name in ["uvicorn", "uvicorn.error", "uvicorn.access", "asyncio"]:
26
16
  logger = logging.getLogger(name)
27
17
 
28
18
  for h in logger.handlers[:]:
29
19
  logger.removeHandler(h)
30
20
 
31
21
  logger.propagate = True
32
-
33
22
  logger.setLevel(logging.NOTSET)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: VersaLog
3
- Version: 2.5.3
3
+ Version: 2.5.5
4
4
  Summary: Versatile logging library.
5
5
  Home-page:
6
6
  Author:
@@ -5,7 +5,7 @@ with open("README.md", encoding="utf-8") as f:
5
5
 
6
6
  setup(
7
7
  name="VersaLog",
8
- version="2.5.3",
8
+ version="2.5.5",
9
9
  description="Versatile logging library.",
10
10
  long_description=long_description,
11
11
  long_description_content_type="text/markdown",
@@ -1,20 +0,0 @@
1
- import logging
2
-
3
- class VersaLogHandler(logging.Handler):
4
- def __init__(self, versalog):
5
- super().__init__()
6
- self.versalog = versalog
7
-
8
- def emit(self, record):
9
- msg = self.format(record)
10
-
11
- if record.levelno >= logging.CRITICAL:
12
- self.versalog.critical(msg)
13
- elif record.levelno >= logging.ERROR:
14
- self.versalog.error(msg)
15
- elif record.levelno >= logging.WARNING:
16
- self.versalog.warning(msg)
17
- elif record.levelno >= logging.INFO:
18
- self.versalog.info(msg)
19
- else:
20
- self.versalog.debug(msg)
File without changes
File without changes
File without changes