@@ -130,6 +130,16 @@ def output_colorized(self, message):
130130
131131 ctypes .windll .kernel32 .SetConsoleTextAttribute (h , color )
132132
133+ def _reset (self , message ):
134+ if not message .endswith (self .reset ):
135+ reset = self .reset
136+ elif self .bold in message : # bold
137+ reset = self .reset + self .bold
138+ else :
139+ reset = self .reset
140+
141+ return reset
142+
133143 def colorize (self , message , levelno ):
134144 if levelno in self .level_map and self .is_tty :
135145 bg , fg , bold = self .level_map [levelno ]
@@ -162,51 +172,29 @@ def colorize(self, message, levelno):
162172 match = re .search (r"\A\s*\[([\d:]+)\]" , message ) # time
163173 if match :
164174 time = match .group (1 )
165- if not message .endswith (self .reset ):
166- reset = self .reset
167- elif self .bold in message : # bold
168- reset = self .reset + self .bold
169- else :
170- reset = self .reset
171- message = message .replace (time , '' .join ((self .csi , str (self .color_map ["cyan" ] + 30 ), 'm' , time , reset )), 1 )
175+ message = message .replace (time , '' .join ((self .csi , str (self .color_map ["cyan" ] + 30 ), 'm' , time , self ._reset (message ))), 1 )
172176
173177 match = re .search (r"\[(#\d+)\]" , message ) # counter
174178 if match :
175179 counter = match .group (1 )
176- if not message .endswith (self .reset ):
177- reset = self .reset
178- elif self .bold in message : # bold
179- reset = self .reset + self .bold
180- else :
181- reset = self .reset
182- message = message .replace (counter , '' .join ((self .csi , str (self .color_map ["yellow" ] + 30 ), 'm' , counter , reset )), 1 )
180+ message = message .replace (counter , '' .join ((self .csi , str (self .color_map ["yellow" ] + 30 ), 'm' , counter , self ._reset (message ))), 1 )
183181
184182 if level != "PAYLOAD" :
185183 if any (_ in message for _ in ("parsed DBMS error message" ,)):
186184 string = re .search (r": '(.+)'" , message ).group (1 )
187- if not message .endswith (self .reset ):
188- reset = self .reset
189- elif self .bold in message : # bold
190- reset = self .reset + self .bold
191- else :
192- reset = self .reset
193- message = message .replace ("'%s'" % string , "'%s'" % '' .join ((self .csi , str (self .color_map ["white" ] + 30 ), 'm' , string , reset )), 1 )
185+ message = message .replace ("'%s'" % string , "'%s'" % '' .join ((self .csi , str (self .color_map ["white" ] + 30 ), 'm' , string , self ._reset (message ))), 1 )
194186 else :
195187 for match in re .finditer (r"[^\w]'([^']+)'" , message ): # single-quoted
196188 string = match .group (1 )
197- if not message .endswith (self .reset ):
198- reset = self .reset
199- elif self .bold in message : # bold
200- reset = self .reset + self .bold
201- else :
202- reset = self .reset
203- message = message .replace ("'%s'" % string , "'%s'" % '' .join ((self .csi , str (self .color_map ["white" ] + 30 ), 'm' , string , reset )), 1 )
189+ message = message .replace ("'%s'" % string , "'%s'" % '' .join ((self .csi , str (self .color_map ["white" ] + 30 ), 'm' , string , self ._reset (message ))), 1 )
204190 else :
205191 message = '' .join ((self .csi , ';' .join (params ), 'm' , message , self .reset ))
206192
207193 if prefix :
208194 message = "%s%s" % (prefix , message )
209195
196+ message = message .replace ("%s]" % self .bold , "]%s" % self .bold ) # dirty patch
197+
210198 return message
211199
212200 def format (self , record ):
0 commit comments