@@ -45,6 +45,7 @@ class ColorizingStreamHandler(logging.StreamHandler):
4545 }
4646 csi = '\x1b ['
4747 reset = '\x1b [0m'
48+ bold = "\x1b [1m"
4849 disable_coloring = False
4950
5051 @property
@@ -150,40 +151,43 @@ def colorize(self, message, levelno):
150151 else :
151152 prefix = ""
152153
153- match = re .search (r"\[([A-Z ]+)\]" , message )
154+ match = re .search (r"\[([A-Z ]+)\]" , message ) # log level
154155 if match :
155156 level = match .group (1 )
156- if message .startswith (" \x1b [1m" ):
157- message = message .replace (" \x1b [1m" , "" )
158- reset = self .reset + " \x1b [1m"
157+ if message .startswith (self . bold ):
158+ message = message .replace (self . bold , "" )
159+ reset = self .reset + self . bold
159160 params .append ('1' )
160161 else :
161162 reset = self .reset
162163 message = message .replace (level , '' .join ((self .csi , ';' .join (params ), 'm' , level , reset )), 1 )
163- else :
164- message = "%s%s" % (prefix , '' .join ((self .csi , ';' .join (params ), 'm' , message , self .reset )))
165164
166- match = re .search (r"\A\s*\[([\d:]+)\]" , message )
167- if match :
168- time = match .group (1 )
169- if not message .endswith (self .reset ):
170- reset = self .reset
171- elif message .startswith ("\x1b [1m" ): # bold
172- reset = self .reset + "\x1b [1m"
173- else :
174- reset = self .reset
175- message = message .replace (time , '' .join ((self .csi , str (self .color_map ["cyan" ] + 30 ), 'm' , time , reset )), 1 )
165+ match = re .search (r"\A\s*\[([\d:]+)\]" , message ) # time
166+ if match :
167+ time = match .group (1 )
168+ if not message .endswith (self .reset ):
169+ reset = self .reset
170+ elif message .startswith (self .bold ): # bold
171+ reset = self .reset + self .bold
172+ else :
173+ reset = self .reset
174+ message = message .replace (time , '' .join ((self .csi , str (self .color_map ["cyan" ] + 30 ), 'm' , time , reset )), 1 )
175+
176+ match = re .search (r"\[(#\d+)\]" , message ) # counter
177+ if match :
178+ counter = match .group (1 )
179+ if not message .endswith (self .reset ):
180+ reset = self .reset
181+ elif message .startswith (self .bold ): # bold
182+ reset = self .reset + self .bold
183+ else :
184+ reset = self .reset
185+ message = message .replace (counter , '' .join ((self .csi , str (self .color_map ["yellow" ] + 30 ), 'm' , counter , reset )), 1 )
186+ else :
187+ message = '' .join ((self .csi , ';' .join (params ), 'm' , message , self .reset ))
176188
177- match = re .search (r"\[(#\d+)\]" , message )
178- if match :
179- counter = match .group (1 )
180- if not message .endswith (self .reset ):
181- reset = self .reset
182- elif message .startswith ("\x1b [1m" ): # bold
183- reset = self .reset + "\x1b [1m"
184- else :
185- reset = self .reset
186- message = message .replace (counter , '' .join ((self .csi , str (self .color_map ["yellow" ] + 30 ), 'm' , counter , reset )), 1 )
189+ if prefix :
190+ message = "%s%s" % (prefix , message )
187191
188192 return message
189193
0 commit comments