Spaces:
Runtime error
Runtime error
import logging | |
import json | |
from pathlib import Path | |
class CustomFormatter(logging.Formatter): | |
def format(self, record): | |
"""record.__dict__ looks like: | |
{'name': 'SwarmLogger', | |
'msg': {'message': "Created 2 agents with roles: ['python developer' 'python developer']"}, 'args': (), 'levelname': 'INFO', 'levelno': 20, 'pathname': 'D:\\00Repos\\GPT-Swarm\\tests\\..\\swarmai\\Swarm.py', 'filename': 'Swarm.py', 'module': 'Swarm', 'exc_info': None, 'exc_text': None, 'stack_info': None, 'lineno': 203, 'funcName': 'log', 'created': 1681553727.7010381, 'msecs': 701.038122177124, 'relativeCreated': 1111.7806434631348, 'thread': 46472, 'threadName': 'MainThread', 'processName': 'MainProcess', 'process': 65684} | |
""" | |
record_content = record.msg | |
if "message" in record_content: | |
message = record_content["message"] | |
else: | |
message = record_content | |
if 'agent_id' not in record_content: | |
record_content["agent_id"] = -1 | |
if 'cycle' not in record_content: | |
record_content["cycle"] = -1 | |
if 'step' not in record_content: | |
record_content["step"] = "swarm" | |
log_data = { | |
'time': self.formatTime(record, self.datefmt), | |
'level': record.levelname, | |
'agent_id': record_content["agent_id"], | |
'cycle': record_content["cycle"], | |
'step': record_content["step"], | |
'message': message | |
} | |
return json.dumps(log_data) | |
class CustomLogger(logging.Logger): | |
def __init__(self, log_folder): | |
super().__init__("SwarmLogger") | |
self.log_folder = log_folder | |
self.log_folder.mkdir(parents=True, exist_ok=True) | |
log_file = f"{self.log_folder}/swarm.json" | |
# write empty string to the log file to clear it | |
with open(log_file, "w") as f: | |
f.write("") | |
f.close() | |
# Create a custom logger instance and configure it | |
self.log_file = log_file | |
self.log_folder = self.log_folder | |
self.setLevel(logging.DEBUG) | |
formatter = CustomFormatter() | |
fh = logging.FileHandler(log_file) | |
fh.setFormatter(formatter) | |
fh.setLevel(logging.DEBUG) | |
fh.setFormatter(formatter) | |
self.addHandler(fh) | |
ch = logging.StreamHandler() | |
ch.setLevel(logging.INFO) | |
ch.setFormatter(formatter) | |
self.addHandler(ch) | |