| | |
| | | public class LlmCallLogServiceImpl extends ServiceImpl<LlmCallLogMapper, LlmCallLog> implements LlmCallLogService { |
| | | |
| | | private volatile boolean disabled = false; |
| | | private volatile long lastRetryTime = 0; |
| | | private static final long RETRY_INTERVAL_MS = 60_000; // 1 分钟后重试 |
| | | |
| | | @Override |
| | | public void saveIgnoreError(LlmCallLog logItem) { |
| | | if (logItem == null || disabled) { |
| | | if (logItem == null) { |
| | | return; |
| | | } |
| | | if (disabled) { |
| | | // 定期重试,防止表后来创建了但 disabled 一直为 true |
| | | long now = System.currentTimeMillis(); |
| | | if (now - lastRetryTime < RETRY_INTERVAL_MS) { |
| | | return; |
| | | } |
| | | lastRetryTime = now; |
| | | log.info("LLM调用日志之前已禁用,尝试重新写入..."); |
| | | } |
| | | try { |
| | | save(logItem); |
| | | if (disabled) { |
| | | disabled = false; |
| | | log.info("LLM调用日志写入成功,已恢复日志记录"); |
| | | } |
| | | } catch (Exception e) { |
| | | String msg = e.getMessage() == null ? "" : e.getMessage(); |
| | | if (msg.contains("doesn't exist") || msg.contains("不存在")) { |
| | | disabled = true; |
| | | log.warn("LLM调用日志表不存在,日志记录已自动关闭,请先执行建表SQL"); |
| | | lastRetryTime = System.currentTimeMillis(); |
| | | log.warn("LLM调用日志表不存在,日志记录已暂停,请先执行建表SQL"); |
| | | return; |
| | | } |
| | | log.warn("写入LLM调用日志失败: {}", msg); |