From 8022731b341b93565362c0d952a4cbed9c0f9a82 Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Tue, 24 Mar 2026 09:44:15 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=BC=BA=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=99=8D=E7=BA=A7=E9=93=BE=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 记录每个数据源的尝试和结果: - [数据源获取开始] - [数据源] 尝试 Yahoo/腾讯/Tiingo - [数据源] Yahoo/腾讯/Tiingo 成功/失败 - 具体错误信息 帮助定位 UPRO 等股票获取失败的原因 --- .../Services/MarketDataService.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/AssetManager.Infrastructure/Services/MarketDataService.cs b/AssetManager.Infrastructure/Services/MarketDataService.cs index 3b55804..9e2877b 100755 --- a/AssetManager.Infrastructure/Services/MarketDataService.cs +++ b/AssetManager.Infrastructure/Services/MarketDataService.cs @@ -104,13 +104,14 @@ public class MarketDataService : IMarketDataService /// private async Task FetchPriceFromSourceAsync(string symbol, string assetType) { - _logger.LogInformation("从数据源获取价格: {Symbol}, 资产类型: {AssetType}", symbol, assetType); + _logger.LogInformation("[数据源获取开始] Symbol={Symbol}, AssetType={AssetType}", symbol, assetType); MarketPriceResponse response; string source; if (assetType.Equals("Crypto", StringComparison.OrdinalIgnoreCase)) { + _logger.LogInformation("[数据源] 使用 OKX 获取 {Symbol}", symbol); response = await _okxService.GetCryptoPriceAsync(symbol); source = "OKX"; } @@ -119,22 +120,28 @@ public class MarketDataService : IMarketDataService // 股票:优先Yahoo财经,失败降级腾讯财经,最后降级 Tiingo try { + _logger.LogInformation("[数据源] 尝试 Yahoo 获取 {Symbol}", symbol); response = await _yahooService.GetStockPriceAsync(symbol); source = "Yahoo"; + _logger.LogInformation("[数据源] Yahoo 成功: {Symbol} = {Price}", symbol, response.Price); } catch (Exception ex) { - _logger.LogWarning(ex, "Yahoo财经获取失败,降级使用 腾讯: {Symbol}", symbol); + _logger.LogWarning("[数据源] Yahoo 失败: {Symbol}, 错误: {Error}", symbol, ex.Message); try { + _logger.LogInformation("[数据源] 降级使用腾讯获取 {Symbol}", symbol); response = await _tencentService.GetStockPriceAsync(symbol); source = "Tencent"; + _logger.LogInformation("[数据源] 腾讯成功: {Symbol} = {Price}", symbol, response.Price); } catch (Exception tencentEx) { - _logger.LogWarning(tencentEx, "腾讯财经获取失败,降级使用 Tiingo: {Symbol}", symbol); + _logger.LogWarning("[数据源] 腾讯失败: {Symbol}, 错误: {Error}", symbol, tencentEx.Message); + _logger.LogInformation("[数据源] 最后降级使用 Tiingo 获取 {Symbol}", symbol); response = await _tiingoService.GetStockPriceAsync(symbol); source = "Tiingo"; + _logger.LogInformation("[数据源] Tiingo 成功: {Symbol} = {Price}", symbol, response.Price); } } }