搜索插件、代码仓与 APP 分类

插件详情v0.7.0

fimber_io

支持基于文件的日志记录器的 Fimber 包版本 - 依赖于 dart::io

AndroidiOSmacOSWindowsLinux
近 30 天下载
865
喜欢数
4
Pub 分数
150

安装插件

flutter pub add fimber_io

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Fimber_io 是一个用于 Flutter 应用程序的日志包,它通过使用 Dart 的 io 库扩展了核心 Fimber 库,增加了基于文件的日志记录功能。该包使开发者能够将日志持久化地捕获并存储在设备文件中,这在生产环境调试时尤其有用。该包支持 Android、iOS、macOS、Windows 和 Linux 多个平台,适用于跨平台应用。通过可自定义的日志级别和格式化器,它提供了对应用行为的详细洞察,同时保持性能和可靠性。

适合场景

  • 调试生产问题
  • 持久化日志存储
  • 跨平台日志记录
  • 性能监控
  • 错误跟踪

主要特点

  • 基于文件的日志记录
  • 所有主要操作系统平台支持
  • 可自定义的日志级别
  • 与 Dart io 的集成
  • 可扩展的格式化程序支持

适合对象

  • 需要持久化日志的开发者
  • 致力于跨平台应用的团队
  • 需要详细错误分析的应用程序
  • 生产调试工作流程
  • 日志密集型应用

使用建议

  • 在某些平台上需要文件系统权限
  • 随时间推移的潜在磁盘空间使用量
  • 需要谨慎的日志轮转策略
  • 如果配置不当,可能会影响性能
  • 未经优化,不适用于高频日志记录

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Analyze Code Style

fimber

Extensible logging for Dart and Flutter.

Package is based on famous Android logging library API - Timber, this is library for simplify logging for Flutter. Using similar (as far as Dart lang allows) method API with same concepts for tree and planting logging tree. Also check out flutter_fimber which extends fimber to platform specific output and logging style.

Getting Started

To start add using it:

Add fimber to pubspec.yaml
pre-nullsafety
dependencies:
  fimber: ^0.6.6
  • remember about import in file you plan to use Fimber
import 'package:fimber/fimber.dart';

Initialize logging tree on start of your application

void main() {
  Fimber.plantTree(DebugTree());
  // app code here ...
  
  // DebugTree options for time elapsed
  // by default DebugTree will output timestamp of the VM/Flutter app
  // to enable elapsed time since planting the tree log
  Fimber.plantTree(DebugTree.elapsed());
  
}
 
Start using it with static methods:
import 'fimber.dart';


void main() {
  var parameter = 343.0;
  // use directly
  Fimber.i("Test message $argument");
  Fimber.i("Extra error message", ex: Exception("Test thorwable"));
  
  // other log levels
  Fimber.d("DEBUG");
  Fimber.v("VERBOSE");
  Fimber.w("WARN");
  
  try {
    throw Exception("Exception thrown");
  } catch (e, stacktrace) {
    // providing `stacktrace` will better show where issue was thrown
    // if not provided will use log line location.
    Fimber.i("Error caught.", ex: e, stacktrace: stacktrace);
  }
}

This will log the value and grab a TAG from stacktrace - that is little costly and if more logs will be done per second.

Colorize logs - ColorizeStyle

useColors property set to true will use default colors of the logos, you can change the mapping with in colorizeMap for DebugTree and CustomFormatTree The useColors by default is disabled.

ColorizeStyle Aggregates list of AnsiStyle so you can combine styles together.

AnsiStyle is combination of AnsiColor and AnsiSelection values

Here is output of test output.

Colorize Test Output

Create tagged version of Fimber

And use its instance inside class, you can create logger for a dart file or for a class.

var logger = FimberLog("MY_TAG");

void main() {
  
  logger.d("Test message");
}

// or inside a class
class SomeBloc {
  var logger = FimberLog("SomeBloc");
  String fetchMessage() {
    logger.d("About to fetch some data.");
    //...
    var data = "load something";

    logger.d("Retrived data (len = ${data.length}");
    return data;
  }
}
Use block function and pass method that uses logger.

Use this function to log multiple messages with same tag, allows optional return value. Due to nature of auto-tag generation from stacktrace this block only does it once and create local FimberLog instance to pass into the anonymous method.

    var someMessage = "Test message from inside of block";
    var output = Fimber.block((log) {
      log.d("Started block");
      var i = 0;
      for (i = 0; i < 10; i++) {
        log.d("$someMessage, value: $i");
      }
      log.i("End of block");
      return i;
    });
Custon line formatters

Use custom line formatters to define your logging format.


    Fimber.plantTree(CustomFormatTree(
        logFormat: "${CustomFormatTree.TIME_ELAPSED_TOKEN} ${CustomFormatTree
            .MESSAGE_TOKEN} ${CustomFormatTree.TIME_STAMP_TOKEN}"
    ));

Deprecated moved to fimber_io package

import 'package:fimber_io/fimber_io.dart';

    Fimber.plantTree(FimberFileTree("my-Log-File.txt",
        logFormat: "${CustomFormatTree.TIME_ELAPSED_TOKEN} ${CustomFormatTree
            .MESSAGE_TOKEN} ${CustomFormatTree.TIME_STAMP_TOKEN}"
    ));

Use file log tree - the logs will go to a log file (Useful in DartVM apps). There are log rolling with size and time/date interval, so it is possible to setup log output per hour/day or any other time.

see: SizeRollingFileTree or TimedRollingFileTree or use abstract class RollingFileTree to create your own version of rolling log file.

TODO - road map

Licence


   Copyright 2018 Mateusz Perlak

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目

暂无相关数据。