Skip to content

Commit

Permalink
Clean up file logs (All-Hands-AI#4979)
Browse files Browse the repository at this point in the history
  • Loading branch information
enyst authored Nov 13, 2024
1 parent bc3f0ac commit a93f140
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion openhands/core/logger.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import copy
import logging
import os
import re
Expand Down Expand Up @@ -45,6 +46,29 @@
}


class NoColorFormatter(logging.Formatter):
"""Formatter for non-colored logging in files."""

def format(self, record: logging.LogRecord) -> str:
# Create a deep copy of the record to avoid modifying the original
new_record: logging.LogRecord = copy.deepcopy(record)
# Strip ANSI color codes from the message
new_record.msg = strip_ansi(new_record.msg)

return super().format(new_record)


def strip_ansi(s: str) -> str:
"""
Removes ANSI escape sequences from str, as defined by ECMA-048 in
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
# https://github.com/ewen-lbh/python-strip-ansi/blob/master/strip_ansi/__init__.py
"""
pattern = re.compile(r'\x1B\[\d+(;\d+){0,2}m')
stripped = pattern.sub('', s)
return stripped


class ColoredFormatter(logging.Formatter):
def format(self, record):
msg_type = record.__dict__.get('msg_type')
Expand All @@ -70,7 +94,7 @@ def format(self, record):
return super().format(record)


file_formatter = logging.Formatter(
file_formatter = NoColorFormatter(
'%(asctime)s - %(name)s:%(levelname)s: %(filename)s:%(lineno)s - %(message)s',
datefmt='%H:%M:%S',
)
Expand Down

0 comments on commit a93f140

Please sign in to comment.