Skip to content
Snippets Groups Projects
Commit 60bcba05 authored by Karim Ahmed's avatar Karim Ahmed
Browse files

feat: simplify implementation to JSON per line

parent a2492532
No related branches found
No related tags found
1 merge request!1059[webservice] Intoduce Global Logger for xfel-calibrate
......@@ -34,39 +34,6 @@ class CustomJsonFormatter(jsonlogger.JsonFormatter):
log_record['exc_info'] = self.formatException(record.exc_info)
class JSONArrayHandler(logging.FileHandler):
def __init__(self, filename, mode='a', encoding=None, delay=False):
super().__init__(filename, mode, encoding, delay)
self.file_empty = True
def emit(self, record):
try:
msg = self.format(record)
json_msg = json.loads(msg)
with self.lock:
if self.stream is None:
self.stream = self._open()
if self.file_empty:
self.stream.write('[\n')
self.file_empty = False
else:
self.stream.write(',\n')
json.dump(json_msg, self.stream, indent=2)
self.stream.flush()
except Exception:
self.handleError(record)
def close(self):
if self.stream is not None:
with self.lock:
if not self.file_empty:
self.stream.write('\n]')
super().close()
# Create a logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)
......@@ -80,7 +47,7 @@ formatter = CustomJsonFormatter(
# Function to create a file handler with job-specific JSON log file
def create_job_specific_handler(log_level, file_suffix):
log_file = f'{file_suffix}_{JOB_ID}.json'
handler = JSONArrayHandler(log_file, mode='a+', delay=True)
handler = logging.FileHandler(log_file, delay=True)
handler.setLevel(log_level)
handler.setFormatter(formatter)
return handler
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment