添加默认logger

This commit is contained in:
xunbu
2025-09-09 17:32:08 +08:00
parent 787009dcaa
commit e82f6f1d15
4 changed files with 88 additions and 84 deletions

View File

@@ -40,7 +40,7 @@ class PartialAgentResultError(ValueError):
@dataclass(kw_only=True)
class AgentConfig:
logger: logging.Logger
logger: logging.Logger = global_logger
base_url: str
api_key: str | None = None
model_id: str
@@ -236,7 +236,7 @@ class Agent:
self.max_concurrent = config.concurrent
self.timeout = httpx.Timeout(connect=5, read=config.timeout, write=300, pool=10)
self.thinking = config.thinking
self.logger = config.logger or global_logger
self.logger = config.logger
self.total_error_counter = TotalErrorCounter(logger=self.logger)
# 新增:用于统计最终未解决的错误
self.unresolved_error_lock = Lock()
@@ -461,7 +461,6 @@ class Agent:
async with httpx.AsyncClient(
trust_env=False, proxies=proxies, verify=False, limits=limits
) as client:
async def send_with_semaphore(p_text: str):
async with semaphore:
result = await self.send_async(
@@ -491,9 +490,9 @@ class Agent:
# 新增打印token使用统计
token_stats = self.token_counter.get_stats()
self.logger.info(
f"Token使用统计 - 输入: {token_stats['input_tokens']/1000:.2f}K(含cached: {token_stats['cached_tokens']/1000:.2f}K), "
f"输出: {token_stats['output_tokens']/1000:.2f}K(含reasoning: {token_stats['reasoning_tokens']/1000:.2f}K), "
f"总计: {token_stats['total_tokens']/1000:.2f}K"
f"Token使用统计 - 输入: {token_stats['input_tokens'] / 1000:.2f}K(含cached: {token_stats['cached_tokens'] / 1000:.2f}K), "
f"输出: {token_stats['output_tokens'] / 1000:.2f}K(含reasoning: {token_stats['reasoning_tokens'] / 1000:.2f}K), "
f"总计: {token_stats['total_tokens'] / 1000:.2f}K"
)
return results
@@ -721,9 +720,9 @@ class Agent:
# 新增打印token使用统计
token_stats = self.token_counter.get_stats()
self.logger.info(
f"Token使用统计 - 输入: {token_stats['input_tokens']/1000:.2f}K(含cached: {token_stats['cached_tokens']/1000:.2f}K), "
f"输出: {token_stats['output_tokens']/1000:.2f}K(含reasoning: {token_stats['reasoning_tokens']/1000:.2f}K), "
f"总计: {token_stats['total_tokens']/1000:.2f}K"
f"Token使用统计 - 输入: {token_stats['input_tokens'] / 1000:.2f}K(含cached: {token_stats['cached_tokens'] / 1000:.2f}K), "
f"输出: {token_stats['output_tokens'] / 1000:.2f}K(含reasoning: {token_stats['reasoning_tokens'] / 1000:.2f}K), "
f"总计: {token_stats['total_tokens'] / 1000:.2f}K"
)
return output_list

View File

@@ -12,7 +12,7 @@ from docutranslate.logger import global_logger
@dataclass(kw_only=True)
class ConverterConfig(ABC):
logger: Logger | None = None
logger: Logger = global_logger
@abstractmethod
def gethash(self) -> Hashable:
@@ -23,9 +23,7 @@ class Converter(ABC):
def __init__(self, config: ConverterConfig | None = None):
self.config = config
if config:
self.logger = config.logger or global_logger
else:
self.logger = global_logger
self.logger = config.logger
@abstractmethod
def convert(self, document: Document) -> Document:

View File

@@ -1,29 +1,35 @@
# SPDX-FileCopyrightText: 2025 QinHan
# SPDX-License-Identifier: MPL-2.0
from abc import ABC, abstractmethod
from dataclasses import dataclass
from logging import Logger
from typing import TypeVar,Generic
from abc import ABC,abstractmethod
from typing import TypeVar, Generic
from docutranslate.ir.document import Document
from docutranslate.logger import global_logger
@dataclass(kw_only=True)
class TranslatorConfig:
logger:Logger|None=None
logger: Logger = global_logger
T=TypeVar('T',bound=Document)
class Translator(ABC,Generic[T]):
T = TypeVar('T', bound=Document)
class Translator(ABC, Generic[T]):
"""
翻译中间文本原地替换Translator不做格式转换
"""
def __init__(self,config:TranslatorConfig|None=None):
self.config=config
self.logger=config.logger or global_logger
def __init__(self, config: TranslatorConfig | None = None):
self.config = config
self.logger = config.logger or global_logger
@abstractmethod
def translate(self, document:T) -> Document:
def translate(self, document: T) -> Document:
...
@abstractmethod
async def translate_async(self, document: T) -> Document:
...

View File

@@ -9,11 +9,12 @@ from typing import Self, Generic, TypeVar
from docutranslate.exporter.base import Exporter
from docutranslate.ir.attachment_manager import AttachMentManager
from docutranslate.ir.document import Document
from docutranslate.logger import global_logger
@dataclass(kw_only=True)
class WorkflowConfig:
logger: Logger | None = None
logger: Logger = global_logger
T_Config = TypeVar("T_Config", bound=WorkflowConfig)