Skip to content

Commit dfc2775

Browse files
committed
Add timestamps to codeplain log file
Enhance file logging with ISO-formatted timestamps (YYYY-MM-DD HH:MM:SS) to improve log readability and debugging. Console output remains unchanged with relative timestamps. Fixes #76
1 parent d9c0b54 commit dfc2775

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

plain2code.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
UnsupportedResourceType,
3939
)
4040
from plain2code_logger import (
41+
FILE_LOG_DATE_FORMAT,
42+
FILE_LOG_FORMAT,
4143
LOGGER_NAME,
4244
CrashLogHandler,
4345
IndentedFormatter,
@@ -110,6 +112,11 @@ def setup_logging(
110112
root_logger.setLevel(logging.DEBUG) # Capture all logs; handlers will filter levels as needed
111113

112114
formatter = IndentedFormatter("%(levelname)s:%(name)s:%(message)s")
115+
file_formatter = IndentedFormatter(
116+
FILE_LOG_FORMAT,
117+
datefmt=FILE_LOG_DATE_FORMAT,
118+
indent=len("YYYY-MM-DD HH:MM:SS "),
119+
)
113120

114121
if not headless:
115122
handler = LoggingHandler(event_bus, run_state)
@@ -119,7 +126,7 @@ def setup_logging(
119126
if log_to_file and log_file_path:
120127
try:
121128
file_handler = logging.FileHandler(log_file_path, mode="w", encoding="utf-8")
122-
file_handler.setFormatter(formatter)
129+
file_handler.setFormatter(file_formatter)
123130
file_handler.setLevel(configured_log_level)
124131
root_logger.addHandler(file_handler)
125132
except Exception as e:
@@ -128,7 +135,7 @@ def setup_logging(
128135
# If file logging is disabled, use CrashLogHandler to buffer logs in memory
129136
# in case we need to dump them on crash.
130137
crash_handler = CrashLogHandler()
131-
crash_handler.setFormatter(formatter)
138+
crash_handler.setFormatter(file_formatter)
132139
crash_handler.setLevel(configured_log_level)
133140
root_logger.addHandler(crash_handler)
134141

plain2code_logger.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@
99

1010
LOGGER_NAME = "codeplain"
1111

12+
FILE_LOG_FORMAT = "%(asctime)s %(levelname)s %(name)s: %(message)s"
13+
FILE_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
14+
1215

1316
class IndentedFormatter(logging.Formatter):
17+
def __init__(self, fmt=None, datefmt=None, indent=16):
18+
super().__init__(fmt=fmt, datefmt=datefmt)
19+
self._indent = " " * indent
20+
1421
def format(self, record):
1522
original_message = record.getMessage()
1623

17-
modified_message = original_message.replace("\n", "\n ")
24+
modified_message = original_message.replace("\n", "\n" + self._indent)
1825

1926
record.msg = modified_message
2027
return super().format(record)
@@ -91,7 +98,7 @@ def dump_crash_logs(args, formatter=None):
9198
return
9299

93100
if formatter is None:
94-
formatter = IndentedFormatter("%(levelname)s:%(name)s:%(message)s")
101+
formatter = IndentedFormatter(FILE_LOG_FORMAT, datefmt=FILE_LOG_DATE_FORMAT, indent=len("YYYY-MM-DD HH:MM:SS "))
95102

96103
root_logger = logging.getLogger(LOGGER_NAME)
97104
crash_handler = next((h for h in root_logger.handlers if isinstance(h, CrashLogHandler)), None)

0 commit comments

Comments
 (0)