搜尋套件、儲存庫與 APP 分類

套件詳情v2.0.1

f_logs

FLog 提供快速且簡單的日誌記錄解決方案。所有日誌都儲存在資料庫中,之後可匯出為檔案。

AndroidiOSmacOSWindowsLinux
近 30 天下載
4970
喜歡數
99
Pub 分數
130

安裝套件

flutter pub add f_logs

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

FLog 是一個輕量級的 Flutter 日誌套件,可實現快速簡單的日誌記錄並支援持久化儲存。所有日誌條目都會儲存在本機資料庫中,讓開發者能夠審查和匯出日誌檔案以供除錯使用。此套件設計簡潔易用,可無縫整合至多個平台的應用程式中,包括 Android、iOS、macOS、Windows 和 Linux。該套件支援結構化日誌,並提供一種簡單的方法來追蹤開發和測試期間的應用行為。

適用情境

  • 即時除錯應用程式問題
  • 審查用戶報告的錯誤
  • 分析應用效能隨時間的變化
  • 匯出日誌以供團隊協作
  • 開發過程中追蹤應用流程

主要特色

  • 本地資料庫中的持久化日誌儲存
  • 輕鬆將日誌匯出至檔案
  • 跨平台支援
  • 簡單的 API 結合
  • 即時日誌檢視
  • 所需的設定最少

適合對象

  • 尋求基本日誌記錄的開發者
  • 需要日誌匯出功能的團隊
  • 需要離線日誌保留的應用程式
  • 原型設計與測試階段
  • 行動與桌面應用程式

使用建議

  • 本地儲存的記錄可能會消耗裝置儲存空間
  • 不適用於生產級監控
  • 應主動管理資料庫大小
  • 無內建日誌過濾或搜尋
  • 僅限本機資料持久化

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

banner

FLogs Advance Logging Framework

FLog is an Advanced Logging Framework develop in flutter that provides quick & simple logging solution. All logs are saved to the DB which can then be exported as a zip file.

Overview

FLogs is written in dart. It basically features two types of loggers (FLog & DataLog) with many of advanced features needed for logging. Logs are saved in database which can then be exported in document directory of Android|iOS device. The logs are helpful when developer wants to analyze user activities within the app. These logs can be filtered and sorted easily. Logs can easily be exported as zip file base on filter type, the zip file can then be uploaded to server or to use it locally.

Many times we want to log set of data to analyze certain activity e.g. Location (GPS Coordinates), Device info, Network requests etc. this helps us to quickly identify and fix the issue that is hard to debug when the app is in production. FLogs provide such functionality to log data set into database. These logs can then be fetched by applying different convinience filters availale.

Features

  1. Logs events in files created separately every hour with 'FLogs' logger. (24 hours)
  2. Files can be compressed and exported for time and day filters
  3. Clear Logs easily
  4. Save logs to custom path (Supported in Android only)
  5. Export Logs to custom path as zip file (Supported in Android only)
  6. Custom Log formatting
  7. CSV support
  8. Custom timestamps support
  9. Custom data logging support with 'DataLogs' logger.
  10. Encryption support added
  11. Multiple directory structures
  12. Print logs as String
  13. Export all or single types of logs
  14. Advanced Automation for deleting logs automatically
  15. Exports HTML formatted exceptions
  16. Log level support

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  f_logs: ^1.0.x

2. Install it

You can install packages from the command line:

with Flutter

$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:f_logs/f_logs.dart';

How to use

Log files are exported on storage directory so it's very important to add these permissions to your project's manifest file first.

Android

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

iOS

<key>NSPhotoLibraryAddUsageDescription</key>
<string>FLogs would like to save photos from the app to your gallery</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>FLogs would like to access your photo gallery for uploading images to the app</string>

To save logs, simply call any of the method mentioned below:

1. Simple Trace Log

    FLog.trace(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

2. Simple Debug Log

    FLog.debug(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

3. Simple Info Log

    FLog.info(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

4. Simple Warning Log

    FLog.warning(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log";

5. Simple Error Log

    FLog.error(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

6. Simple Severe Log

    FLog.severe(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

7. Severe Log with Exception and StackTrace

    FLog.logThis(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log",
      type: LogLevel.SEVERE, 
      exception: Exception("This is an Exception!"),
      stacktrace: StackTrace.current);

8. Simple Fatal Log

    FLog.fatal(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log");

9. Data Type Log

    FLog.logThis(
      className: "HomePage",
      methodName: "_buildRow1",
      text: "My log",
      type: LogLevel.SEVERE,
      dataLogType: DataLogType.DEVICE.toString());

Available Methods

FLogs provide many convenience methods to save logs into or to fetch them from database, below is the list of all the methods available:

1. logThis

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. The difference between FLog and DataLogs is described above, you can also check out wiki for more details. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static logThis({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    @required LogLevel type,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

2. trace

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static trace({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

3. debug

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static debug({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

4. info

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static info({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

5. warning

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static warning({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

6. error

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static error({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

7. severe

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static severe({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

8. fatal

Logs string data along with className, methodName, logText and the type of log (LogLevel.SEVERE, LogLevel.INFO) etc. The same method can be used to log exception(s) or data logs. If either className or methodName is not provided, it will automatically be taken by getting calling class and method.

static fatal({
    String className, // This is optional if not provided, then it will automatically be taken by getting calling class
    String methodName, // This is optional if not provided, then it will automatically be taken by getting calling method
    @required String text,
    Exception exception,
    String dataLogType,
    StackTrace stacktrace,
}){}

9. printLogs

Fetches all the logs from database and prints them as a string using StringBuffer()

static printLogs() async {}

10. getAllLogsByCustomFilter

Accepts list of filters as an arguments and returns list of logs based on the provided filters. The use of Filters with their usage is explained in wiki, please checkout wiki for more details.

List<Filter> filters = [Filter.greaterThan('[FieldName]', '[Value]')]

static Future<List<Log>> getAllLogsByCustomFilter(
    {List<Filter> filters}) async {}

11. getAllLogsByFilter

A convenience method that filters data based on the provided filter params e.g. dataLogsType (DataLogType.DEVICE, DataLogType.NETWORK), logLevels(LogLevel.SEVERE, LogLevel.INFO), startTimeInMillis (millisec of the day you from where you want logs to be fetched), endTimeInMillis (milisec of the day you till you want logs to be fetched) and filterType (FilterType.LAST_HOUR, FilterType.LAST_24_HOURS, FilterType.TODAY, FilterType.WEEK, FilterType.ALL). Filter type can't be used with startTimeInMillis, endTimeInMillis, if so the priority will be given to startTimeInMillis, endTimeInMillis. In-order to have full control over filters, use method provided above.

static Future<List<Log>> getAllLogsByFilter(
    {List<String> dataLogsType,
    List<String> logLevels,
    int startTimeInMillis,
    int endTimeInMillis,
    FilterType filterType}}) async {}

12. getAllLogs

Fetches all the logs from database and returns a list of logs.

static Future<List<Log>> getAllLogs() async {}

13. exportLogs

Exports logs to external storage under FLog directory.

static exportLogs() async {}

14. clearLogs

Clears all the logs stored in database.

static clearLogs() {}

15. applyConfigurations

Apply user provided configurations to FLogs.

static applyConfigurations(LogsConfig config) {}

16. deleteAllLogsByFilter

Accepts list of filters as an arguments and delete logs based on the provided filters. The use of Filters with their usage is explained in wiki, please checkout wiki for more details.

List<Filter> filters = [Filter.greaterThan('[FieldName]', '[Value]')]

static deleteAllLogsByFilter(
    {List<Filter> filters}) async {}

Wiki

Checkout wiki for more info

所屬分類

依賴

依賴清單 7 項

原始碼儲存庫

使用此套件的專案