From 9e3a7d5721ecf057a2cc6d468cb9fedb497e81e7 Mon Sep 17 00:00:00 2001 From: qmqz Date: Thu, 5 Feb 2026 11:39:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=20=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD=20=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8F=B0=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/EasyDartModule.dart | 7 +- lib/base/database/DataBase.dart | 2 + lib/base/database/impl/MongoDb.dart | 4 ++ lib/base/logger/Logger.dart | 24 ++++++- lib/base/logger/impl/ConsoleLogger.dart | 93 +++++++++++++++++++++++++ lib/base/logger/impl/LokiLogger.dart | 12 ---- lib/base/mqtt/mqtt.dart | 7 ++ 7 files changed, 134 insertions(+), 15 deletions(-) create mode 100644 lib/base/logger/impl/ConsoleLogger.dart diff --git a/lib/EasyDartModule.dart b/lib/EasyDartModule.dart index ea1f9b8..20aecde 100644 --- a/lib/EasyDartModule.dart +++ b/lib/EasyDartModule.dart @@ -6,6 +6,7 @@ import 'package:EasyDartModule/base/discovery/Discovery.dart'; import 'package:EasyDartModule/base/discovery/impl/NacosDiscovery.dart'; import 'package:EasyDartModule/base/http/TraceDio.dart'; import 'package:EasyDartModule/base/logger/Logger.dart'; +import 'package:EasyDartModule/base/logger/impl/ConsoleLogger.dart'; import 'package:EasyDartModule/base/logger/impl/LokiLogger.dart'; import 'package:EasyDartModule/base/mqtt/mqtt.dart'; import 'package:EasyDartModule/base/redis/redis.dart'; @@ -67,7 +68,11 @@ class EasyDartModule { } if (loggerConfig != null) { //初始化日志 - Logger.setInstance(LokiLogger(loggerConfig)); + if (loggerConfig.type == LoggerType.LOKI) { + Logger.setInstance(LokiLogger(loggerConfig)); + } else { + Logger.setInstance(ConsoleLogger(loggerConfig)); + } //web服务器 WebServer.setInstance(ShelfWebServer(logger)); //Dio组件 diff --git a/lib/base/database/DataBase.dart b/lib/base/database/DataBase.dart index 2850d23..ba0285b 100644 --- a/lib/base/database/DataBase.dart +++ b/lib/base/database/DataBase.dart @@ -9,6 +9,8 @@ abstract class DataBase { _dataBase = database; } + bool isConnected(); + // 执行查询操作 Future>> query(String table, {dynamic condition}); diff --git a/lib/base/database/impl/MongoDb.dart b/lib/base/database/impl/MongoDb.dart index 6055207..7d7d3bf 100644 --- a/lib/base/database/impl/MongoDb.dart +++ b/lib/base/database/impl/MongoDb.dart @@ -10,6 +10,10 @@ class MongoDb implements DataBase { connect(false); } + bool isConnected() { + return db.isConnected; + } + void connect(reconnect) { if (reconnect) { print("尝试重连MongoDb"); diff --git a/lib/base/logger/Logger.dart b/lib/base/logger/Logger.dart index ebceeb2..c27858e 100644 --- a/lib/base/logger/Logger.dart +++ b/lib/base/logger/Logger.dart @@ -36,13 +36,33 @@ abstract class Logger { } class LoggerConfig { + LoggerType type; String host; String serviceName; Map? lables; bool print; LoggerConfig( - {required this.host, - required this.serviceName, + {this.host = "", + this.serviceName = "", + this.type = LoggerType.LOKI, this.print = false, this.lables}); } + +enum LoggerType { + LOKI, + CONSOLSE, + ; +} + +enum LoggerLevel { + debug(1), + info(2), + warning(3), + error(4), + off(5), + ; + + final int level; + const LoggerLevel(this.level); +} diff --git a/lib/base/logger/impl/ConsoleLogger.dart b/lib/base/logger/impl/ConsoleLogger.dart new file mode 100644 index 0000000..a862122 --- /dev/null +++ b/lib/base/logger/impl/ConsoleLogger.dart @@ -0,0 +1,93 @@ +import 'package:EasyDartModule/base/logger/Logger.dart'; +import 'package:intl/intl.dart'; + +class ConsoleLogger implements Logger { + final LoggerConfig _config; + LoggerLevel level = LoggerLevel.info; + + ConsoleLogger(this._config); + + @override + void debug(String msg, + {String? tag, + String? traceId, + String? spanId, + String? parentSpanId, + Map? lable}) { + log(msg, + level: LoggerLevel.debug, + tag: tag, + traceId: traceId, + spanId: spanId, + parentSpanId: parentSpanId, + lable: lable); + } + + @override + void error(String msg, + {String? tag, + String? traceId, + String? spanId, + String? parentSpanId, + Map? lable}) { + log(msg, + level: LoggerLevel.error, + tag: tag, + traceId: traceId, + spanId: spanId, + parentSpanId: parentSpanId, + lable: lable); + } + + @override + void info(String msg, + {String? tag, + String? traceId, + String? spanId, + String? parentSpanId, + Map? lable}) { + log(msg, + level: LoggerLevel.info, + tag: tag, + traceId: traceId, + spanId: spanId, + parentSpanId: parentSpanId, + lable: lable); + } + + @override + void warning(String msg, + {String? tag, + String? traceId, + String? spanId, + String? parentSpanId, + Map? lable}) { + log(msg, + level: LoggerLevel.warning, + tag: tag, + traceId: traceId, + spanId: spanId, + parentSpanId: parentSpanId, + lable: lable); + } + + void log(String msg, + {required LoggerLevel level, + String? tag, + String? traceId, + String? spanId, + String? parentSpanId, + Map? lable}) { + if (level.level < this.level.level) { + //日志等级小于设置的输出日志等级 + return; + } + + String time = DateFormat("yyyy-MM-dd HH:mm:ss").format(DateTime.now().toUtc().add(Duration(hours: 8))); + String log = + "$time traceId=$traceId, spanId=$spanId parentSpanId=$parentSpanId tag=$tag ${level.name.toUpperCase()} $msg"; + if (level == LoggerLevel.debug || _config.print) { + print(log); + } + } +} diff --git a/lib/base/logger/impl/LokiLogger.dart b/lib/base/logger/impl/LokiLogger.dart index 2c70d52..018b6d4 100644 --- a/lib/base/logger/impl/LokiLogger.dart +++ b/lib/base/logger/impl/LokiLogger.dart @@ -5,18 +5,6 @@ import 'dart:io'; import 'package:EasyDartModule/base/logger/Logger.dart'; import 'package:dio/dio.dart'; -enum LoggerLevel { - debug(1), - info(2), - warning(3), - error(4), - off(5), - ; - - final int level; - const LoggerLevel(this.level); -} - class LokiLogger implements Logger { final LoggerConfig? _config; final Dio dio; diff --git a/lib/base/mqtt/mqtt.dart b/lib/base/mqtt/mqtt.dart index b5b664d..7f72b51 100644 --- a/lib/base/mqtt/mqtt.dart +++ b/lib/base/mqtt/mqtt.dart @@ -8,6 +8,7 @@ import 'package:typed_data/src/typed_buffer.dart'; class Mqtt { final MqttConfig _config; MqttClient? _client; + bool _connected = false; //标记是否自动重连 bool reconnect = true; //缓存自定义主题订阅信息 @@ -26,10 +27,12 @@ class Mqtt { // _client?.autoReconnect = true; _client?.onConnected = () { // print("aa:mqtt服务器连接成功"); + _connected = true; print("mqtt服务器: ${_config.host} 连接成功"); }; _client?.onDisconnected = () { // print("aa:mqtt服务器连接断开"); + _connected = false; print("mqtt服务器: ${_config.host} 连接断开"); //执行重连操作 if (reconnect) { @@ -48,6 +51,10 @@ class Mqtt { _mqtt = server; } + bool isConnected() { + return this._connected; + } + Future connect({bool reconnect = false}) async { if (reconnect) { //限制重连速率