Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Flutter Boilerplate Project | 1,877 | 5 months ago | 29 | mit | Dart | |||||
A boilerplate project created in flutter using MobX and Provider. | ||||||||||
Flogs | 164 | 4 | 1 | 5 months ago | 18 | April 26, 2022 | 28 | mit | Dart | |
An Advanced Logging Framework develop in flutter that provides quick & simple logging solution. | ||||||||||
Lumberdash | 151 | 2 | 8 | a year ago | 8 | March 08, 2021 | 10 | mit | Dart | |
Do you need logs? Lumberdash is the answer! | ||||||||||
Talker | 140 | 1 | 19 days ago | 34 | August 27, 2022 | 10 | mit | Dart | ||
☎️ Advanced error handler and logger for dart and flutter apps | ||||||||||
Flutter Fimber | 101 | 7 | 4 | 10 months ago | 29 | May 15, 2022 | 12 | apache-2.0 | Dart | |
Fimber is Flutter logger inspired by Timber (logger API for Android) | ||||||||||
Mxlogger | 82 | 16 days ago | 4 | bsd-3-clause | Dart | |||||
MXLogger 是基于mmap内存映射机制的跨平台日志库,支持AES CFB 128位加密,支持iOS Android Flutter。核心代码使用C/C++实现, Flutter端通过ffi调用,性能几乎与原生一致。 底层序列化使用Google开源的flat_buffers实现,高效稳定。 | ||||||||||
Galpi | 59 | 3 years ago | 7 | mit | Dart | |||||
🔖 📱 A book logging app built with Flutter | ||||||||||
Flutter Plugin | 58 | 1 | 7 months ago | 21 | June 25, 2022 | 7 | other | Dart | ||
Flutter plugin for AppSpector SDK. With AppSpector you can remotely debug your app running in the same room or on another continent in real-time. https://pub.dev/packages/appspector | ||||||||||
Let_log | 45 | a year ago | 11 | August 19, 2020 | 4 | mit | Dart | |||
LetLog is a Flutter log system that supports both IDE and in-app display, and supports log and network | ||||||||||
Flutter_logs | 29 | 3 months ago | 32 | apache-2.0 | Kotlin | |||||
An extensive logging framework developed for flutter apps. |
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.
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.
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';
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());
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 {}
Checkout wiki for more info