Flutter Elasticsearch服务插件pip_services3_elasticsearch的使用

Flutter Elasticsearch服务插件pip_services3_elasticsearch的使用

Pip.Services Logo

此模块是Pip.Services多语言微服务工具包的一部分。

Elasticsearch 模块包含数据存储在 Elasticsearch 服务器上的日志组件。

该模块包含以下软件包:

  • Build - 包含用于构建组件的工厂
  • Log - 日志组件

快速链接:

使用

将以下内容添加到您的 pubspec.yaml 文件中:

dependencies:
  pip_services3_elasticsearch: version

现在您可以从命令行安装包:

pub get

微服务组件应该像使用 CompositeLogger 组件一样进行日志记录。 CompositeLogger 会从引用中获取 ElasticSearchLogger,并将日志消息重定向到其他目的地。

class MyComponent implements IConfigurable, IReferenceable {
  CompositeLogger _logger = new CompositeLogger();
  
  configure(ConfigParams config) {
    this._logger.configure(config);
  }
  
  setReferences(IReferences refs) {
    this._logger.setReferences(refs);
  }
  
  myMethod(String? correlationId, param1) {
    this._logger.trace(correlationId, "Executed method mycomponent.mymethod");
    ....
  }
}

包含 Elasticsearch 日志记录器的微服务配置可能如下所示:

...
{{#if ELASTICSEARCH_ENABLED}}
- descriptor: pip-services:logger:elasticsearch:default:1.0
  connection:
    uri: {{{ELASTICSEARCG_SERVICE_URI}}}
    host: {{{ELASTICSEARCH_SERVICE_HOST}}}{{#unless ELASTICSEARCH_SERVICE_HOST}}localhost{{/unless}}
    port: {{ELASTICSEARCG_SERVICE_PORT}}{{#unless ELASTICSEARCH_SERVICE_PORT}}9200{{/unless}}\ 
{{/if}}
...

开发

对于开发,您需要安装以下前提条件:

  • Dart SDK 2
  • Visual Studio Code 或其他您选择的 IDE
  • Docker

安装依赖项:

pub get

运行自动化测试:

pub run test

生成 API 文档:

./docgen.ps1

在提交更改之前,运行容器化的构建和测试:

./build.ps1
./test.ps1
./clear.ps1

联系方式

该库由以下人员创建和维护:

  • Sergey Seroukhov
  • Levichev Dmitry

文档由以下人员编写:

  • Mark Makarychev
  • Levichev Dmitry

示例代码

以下是完整的示例代码:

import 'dart:io';
import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_components/pip_services3_components.dart';
import 'package:pip_services3_elasticsearch/pip_services3_elasticsearch.dart';

void main() async {
  var host = Platform.environment['ELASTICSEARCH_SERVICE_HOST'] ?? 'localhost';
  var port = Platform.environment['ELASTICSEARCH_SERVICE_PORT'] ?? 9200;
  var dateFormat = 'yyyyMMdd';

  var _logger = ElasticSearchLogger();

  var config = ConfigParams.fromTuples([
    'source',
    'test',
    'index',
    'log',
    'daily',
    true,
    'date_format',
    dateFormat,
    'connection.host',
    host,
    'connection.port',
    port
  ]);
  _logger.configure(config);

  await _logger.open(null);

  _logger.setLevel(LogLevel.Trace);
  _logger.fatal(null, null, 'Fatal error message');
  _logger.error(null, null, 'Error message');
  _logger.warn(null, 'Warning message');
  _logger.info(null, 'Information message');
  _logger.debug(null, 'Debug message');
  _logger.trace(null, 'Trace message');

  try {
    // 抛出异常
    throw Exception('Test error');
  } catch (err) {
    var ex = ApplicationException().wrap(err);
    _logger.fatal('123', ex, 'Fatal error');
    _logger.error('123', ex, 'Recoverable error');
  }

  _logger.dump();

  await _logger.close(null);
}

更多关于Flutter Elasticsearch服务插件pip_services3_elasticsearch的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Elasticsearch服务插件pip_services3_elasticsearch的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


pip_services3_elasticsearch 是一个用于在 Flutter 应用中与 Elasticsearch 进行交互的服务插件。它是 pip_services3 生态系统的一部分,旨在为开发者提供简单、灵活且可扩展的日志记录和监控功能。

以下是如何在 Flutter 项目中使用 pip_services3_elasticsearch 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 pip_services3_elasticsearch 依赖:

dependencies:
  pip_services3_elasticsearch: ^1.0.0

然后运行 flutter pub get 来获取依赖。

2. 导入库

在你的 Dart 文件中导入 pip_services3_elasticsearch

import 'package:pip_services3_elasticsearch/elasticsearch.dart';

3. 配置 Elasticsearch 服务

创建一个 ElasticsearchLogger 实例并配置 Elasticsearch 的连接参数:

var logger = ElasticsearchLogger();

logger.configure(ConfigParams.fromTuples([
  'connection.host', 'localhost',
  'connection.port', 9200,
  'index', 'my_index',
  'date_format', 'YYYY.MM.DD',
  'template', '{}'
]));

4. 打开连接

在发送日志之前,需要打开与 Elasticsearch 的连接:

await logger.open(null);

5. 记录日志

使用 log 方法记录日志:

logger.log(LogLevel.Info, '123', 'MyComponent', 'My message');

6. 关闭连接

在应用结束或不再需要记录日志时,关闭连接:

await logger.close(null);

7. 完整示例

以下是一个完整的示例,展示了如何使用 pip_services3_elasticsearch 插件记录日志:

import 'package:pip_services3_elasticsearch/elasticsearch.dart';
import 'package:pip_services3_commons/pip_services3_commons.dart';

void main() async {
  var logger = ElasticsearchLogger();

  logger.configure(ConfigParams.fromTuples([
    'connection.host', 'localhost',
    'connection.port', 9200,
    'index', 'my_index',
    'date_format', 'YYYY.MM.DD',
    'template', '{}'
  ]));

  await logger.open(null);

  logger.log(LogLevel.Info, '123', 'MyComponent', 'My message');

  await logger.close(null);
}

8. 高级配置

你可以进一步配置 ElasticsearchLogger,例如设置日志级别、自定义日志模板等。更多详细信息可以参考 pip_services3_elasticsearch 的官方文档或源代码。

9. 错误处理

在实际应用中,建议添加错误处理逻辑,以处理连接失败或日志记录失败的情况。

try {
  await logger.open(null);
  logger.log(LogLevel.Info, '123', 'MyComponent', 'My message');
} catch (e) {
  print('Error: $e');
} finally {
  await logger.close(null);
}
回到顶部