1
- import logging
2
1
import asyncio
3
- from logging import getLogger , StreamHandler , FileHandler , Formatter
4
- from concurrent .futures import ThreadPoolExecutor
2
+ import logging
3
+ from logging import Formatter , StreamHandler , getLogger
4
+
5
5
from colorama import Fore , Style , init
6
+
6
7
from ..utils import utils
7
8
8
9
# Initialize colorama for Windows compatibility
9
10
init (autoreset = True )
10
11
11
12
12
- class AsyncFileHandler (FileHandler ):
13
- def __init__ (self , filename ):
14
- super ().__init__ (filename )
15
- self .loop = asyncio .get_event_loop ()
16
- self .executor = ThreadPoolExecutor ()
17
-
18
- async def emit (self , record ):
19
- msg = self .format (record )
20
- await self .loop .run_in_executor (self .executor , self ._write , msg )
21
-
22
- def _write (self , msg ):
23
- with self ._open () as file :
24
- file .write (f"{ msg } \n " )
25
- file .flush ()
26
-
27
-
28
13
class ColorFormatter (Formatter ):
29
14
"""Custom formatter to add colors depending on the log level."""
30
15
@@ -49,7 +34,7 @@ def __new__(cls, *args, **kwargs):
49
34
cls ._instance = super (AsyncLogger , cls ).__new__ (cls )
50
35
return cls ._instance
51
36
52
- def __init__ (self , name , file_path = None ):
37
+ def __init__ (self , name ):
53
38
if hasattr (self , "_initialized" ) and self ._initialized :
54
39
return # Prevent re-initialization
55
40
self ._initialized = True
@@ -67,14 +52,6 @@ def __init__(self, name, file_path=None):
67
52
console_handler .setFormatter (formatter )
68
53
self .logger .addHandler (console_handler )
69
54
70
- # File Handler (Asynchronous)
71
- if file_path :
72
- async_file_handler = AsyncFileHandler (file_path )
73
- async_file_handler .setFormatter (
74
- Formatter ("%(asctime)s - %(name)s - %(levelname)s - %(message)s" )
75
- ) # No color for file
76
- self .logger .addHandler (async_file_handler )
77
-
78
55
async def info (self , message ):
79
56
await self ._log_async (self .logger .info , message )
80
57
@@ -116,5 +93,5 @@ def debug(self, message):
116
93
117
94
118
95
# Exposing the logger as a singleton instance
119
- logger_instance = AsyncLogger (name = "graph_ml" , file_path = "graph_ml.log" )
96
+ logger_instance = AsyncLogger (name = "graph_ml" )
120
97
logger = LoggerWrapper (logger_instance )
0 commit comments