11import time
22import json
3+ import datetime
34
45class Logger :
56 def __init__ (self ):
@@ -8,17 +9,28 @@ def __init__(self):
89 def set_redis (self , redis ):
910 self .r = redis
1011
12+ def _format_timestamp (self ):
13+ # Local time with milliseconds
14+ return datetime .datetime .now ().strftime ("%Y-%m-%d %H:%M:%S" )
15+
1116 def log (self , priority , message ):
12- tolog = {}
13- tolog ['time' ] = int (round (time .time ()))
14- tolog ['priority' ] = priority
15- tolog ['message' ] = message
16- print (message )
17+ # build redis-friendly dict
18+ tolog = {
19+ 'time' : int (round (time .time ())), # keep raw timestamp for Redis
20+ 'priority' : priority ,
21+ 'message' : message
22+ }
23+
24+ # print human-readable message with timestamp
25+ ts = self ._format_timestamp ()
26+ print (f"{ ts } { priority .upper ()} : { message } " , flush = True )
27+
28+ # also push JSON to Redis if connected
1729 if self .r is not None :
1830 try :
1931 self .r .lpush ('NETFILTER_LOG' , json .dumps (tolog , ensure_ascii = False ))
2032 except Exception as ex :
21- print (' Failed logging to redis: %s' % ( ex ) )
33+ print (f' { ts } WARN: Failed logging to redis: { ex } ' , flush = True )
2234
2335 def logWarn (self , message ):
2436 self .log ('warn' , message )
@@ -27,4 +39,4 @@ def logCrit(self, message):
2739 self .log ('crit' , message )
2840
2941 def logInfo (self , message ):
30- self .log ('info' , message )
42+ self .log ('info' , message )
0 commit comments