修改日志接口 新增redis

This commit is contained in:
qmqz
2025-01-07 16:50:57 +08:00
parent fd62ed3d98
commit b2fe531919
6 changed files with 161 additions and 45 deletions

View File

@@ -1,10 +1,12 @@
import 'package:EasyDartModule/base/logger/Logger.dart';
import 'package:dio/dio.dart';
import 'package:shelf/shelf.dart' as sf;
import 'package:uuid/uuid.dart';
class TraceDio {
final Dio _dio;
final Logger _logger;
final Uuid uuid = Uuid();
static late TraceDio _traceDio;
@@ -20,36 +22,40 @@ class TraceDio {
_dio.options.preserveHeaderCase = true;
// 设置拦截器,自动添加 traceId 和 spanId并记录日志
String traceId = "none";
String spanId = "none";
_dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
// 获取请求中的 traceId如果没有则生成
traceId = options.headers['X-Trace-ID'];
spanId = options.headers['X-Span-ID'];
// 在请求头中添加 traceId 和 spanId
// options.headers['X-Trace-ID'] = traceId;
// options.headers['X-Span-ID'] = spanId;
String? traceId = options.headers['X-Trace-ID'];
String? spanId = options.headers['X-Span-ID'];
if (traceId == null) {
// 在请求头中添加 traceId 和 spanId
traceId = uuid.v4();
spanId = uuid.v4();
options.headers['X-Trace-ID'] = traceId;
options.headers['X-Span-ID'] = spanId;
}
// 记录请求日志
_logger.info(
'traceId=$traceId, spanId=$spanId Sending request: ${options.method} ${options.uri}',
tag: "DIO");
_logger.info('Sending request: ${options.method} ${options.uri}',
tag: "DIO", traceId: traceId, spanId: spanId);
return handler.next(options); // 继续请求
},
onResponse: (response, handler) {
// 记录响应日志
String? traceId = response.headers.value('X-Trace-ID');
String? spanId = response.headers.value('X-Span-ID');
_logger.info(
'traceId=$traceId, spanId=$spanId Response received: ${response.statusCode} ${response.statusMessage}',
tag: "DIO");
'Response received: ${response.statusCode} ${response.statusMessage}',
tag: "DIO",
traceId: traceId,
spanId: spanId);
return handler.next(response); // 继续处理响应
},
onError: (DioException e, handler) {
// 记录错误日志
_logger.error(
'traceId=$traceId, spanId=$spanId Request failed: ${e.message}',
tag: "DIO");
String? traceId = e.response?.headers.value('X-Trace-ID');
String? spanId = e.response?.headers.value('X-Span-ID');
_logger.error('Request failed: ${e.message}',
tag: "DIO", traceId: traceId, spanId: spanId);
return handler.next(e); // 继续处理错误
},
));