Spaces:
Sleeping
Sleeping

Rename AWorld-main/aworlddistributed/aworldspace/utils/log.py to aworlddistributed/aworldspace/utils/log.py
f3f5f1d
verified
import logging | |
import os | |
from datetime import datetime | |
from aworld.models.model_response import ModelResponse | |
from base import AworldTask, AworldTaskResult | |
from config import ROOT_LOG | |
class TaskLogger: | |
"""任务提交日志记录器""" | |
def __init__(self, log_file: str = "aworld_task_submissions.log"): | |
self.log_file = os.path.join(ROOT_LOG, 'task_logs' , log_file) | |
self._ensure_log_file_exists() | |
def _ensure_log_file_exists(self): | |
"""确保日志文件存在""" | |
if not os.path.exists(self.log_file): | |
os.makedirs(os.path.dirname(self.log_file), exist_ok=True) | |
with open(self.log_file, 'w', encoding='utf-8') as f: | |
f.write("# Aworld Task Submission Log\n") | |
f.write( | |
"# Format: [timestamp] task_id | agent_id | server | status | agent_answer | correct_answer | is_correct | details\n\n") | |
def log_task_submission(self, task: AworldTask, status: str, details: str = "", | |
task_result: AworldTaskResult = None): | |
"""记录任务提交日志""" | |
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
log_entry = f"[{timestamp}] {task.task_id} | {task.agent_id} | {task.node_id} | {status} | {task_result.data.get('agent_answer') if task_result and task_result.data else None} | {task_result.data.get('correct_answer') if task_result and task_result.data else None} | {task_result.data.get('gaia_correct') if task_result and task_result.data else None} |{details}\n" | |
try: | |
with open(self.log_file, 'a', encoding='utf-8') as f: | |
f.write(log_entry) | |
except Exception as e: | |
logging.error(f"Failed to write task submission log: {e}") | |
def log_task_result(self, task: AworldTask, result: ModelResponse): | |
try: | |
date_str = datetime.now().strftime("%Y%m%d") | |
result_dir = os.path.join(ROOT_LOG, 'task_logs', 'result', date_str) | |
os.makedirs(result_dir, exist_ok=True) | |
md_file = f"{result_dir}/{task.task_id}.md" | |
content_parts = [] | |
if hasattr(result, 'content') and result.content: | |
if isinstance(result.content, list): | |
content_parts.extend(result.content) | |
else: | |
content_parts.append(str(result.content)) | |
file_exists = os.path.exists(md_file) | |
with open(md_file, 'a', encoding='utf-8') as f: | |
if not file_exists: | |
f.write(f"# Task Result: {task.task_id}\n\n") | |
f.write(f"**Agent ID:** {task.agent_id}\n\n") | |
f.write(f"**Timestamp:** {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n") | |
f.write("## Content\n\n") | |
if content_parts: | |
for i, content in enumerate(content_parts, 1): | |
f.write(f"{content}\n\n") | |
else: | |
f.write("No content available.\n\n") | |
return md_file | |
except Exception as e: | |
logging.error(f"Failed to write task result log: {e}") | |
return None | |
task_logger = TaskLogger(log_file=f"aworld_task_submissions_{datetime.now().strftime('%Y%m%d')}.log") | |