Giter Club home page Giter Club logo

flogs's People

Contributors

bierbaumtim avatar champ96k avatar olo95 avatar rodydavis avatar slc1973 avatar tusharnikam-htp avatar uur5662 avatar zubairehman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

flogs's Issues

Can not open the flog.db

Hi,
I run the demo on github , on android 9 , and export the flog.db . But I can not open it. I have tried different kinds of sqlite client . but it seems not work .
image

image

how can I fix this?
Thank you

FLog.clearLogs() does not work properly

FLog.clearLogs() does not delete data from database. When I call clearLogs(), close my app, open it again and call FLog.printLogs() I see all my logs again.

deleteAllLogsByFilter not doing anything

With the code below I expect all logs to be deleted - that is all logs will have a timestamp less than this moment. But it doesn't delete anything. If I look at the data I see the all entries still there with an earlier timestamp.

FLog.deleteAllLogsByFilter( filters: [ Filter.lessThan(DBConstants.FIELD_TIMESTAMP, DateTime.now()), ], );

clearLogs() works as expected.

FormatException Unexpected character

FormatException (FormatException: Unexpected character (at character 372)
...LogLevel.INFO","stacktrace":"null"}}{"key":6319,"store":"flogs","value":...
                                       ^
)
_ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404)
_ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:869)
_parseJson (dart:convert-patch/convert_patch.dart:40)
JsonDecoder.convert (dart:convert/json.dart:506)
JsonCodec.decode (dart:convert/json.dart:157)
SembastDatabase.decodeRecordLineString (\Users\silver\.pub-cache\hosted\pub.dartlang.org\sembast-3.0.2\lib\src\database_impl.dart:220)
SembastDatabase.open.<anonymous closure>.import (\Users\silver\.pub-cache\hosted\pub.dartlang.org\sembast-3.0.2\lib\src\database_impl.dart:793)
<asynchronous gap> (Unknown Source:0)
SembastDatabase.open.<anonymous closure> (\Users\silver\.pub-cache\hosted\pub.dartlang.org\sembast-3.0.2\lib\src\database_impl.dart:842)
<asynchronous gap> (Unknown Source:0)
BasicLock.synchronized (\Users\silver\.pub-cache\hosted\pub.dartlang.org\synchronized-3.0.0\lib\src\basic_lock.dart:33)
<asynchronous gap> (Unknown Source:0)
SembastDatabase.open (\Users\silver\.pub-cache\hosted\pub.dartlang.org\sembast-3.0.2\lib\src\database_impl.dart:638)
<asynchronous gap> (Unknown Source:0)
DatabaseOpenHelper.openDatabase.<anonymous closure> (\Users\silver\.pub-cache\hosted\pub.dartlang.org\sembast-3.0.2\lib\src\database_factory_mixin.dart:86)
<asynchronous gap> (Unknown Source:0)
BasicLock.synchronized (\Users\silver\.pub-cache\hosted\pub.dartlang.org\synchronized-3.0.0\lib\src\basic_lock.dart:33)
<asynchronous gap> (Unknown Source:0)
AppDatabase._openDatabase (\Users\silver\.pub-cache\git\Flogs-edec750a0149d54aecec608a12556066211da9fd\lib\data\local\app_database.dart:59)
<asynchronous gap> (Unknown Source:0)

Unhandled Exception: type 'Future<List<RecordSnapshot<int, Map<String, Object?>>>>' is not a subtype of type 'FutureOr<List<RecordSnapshot<int, Map<String, Object>>>>' in type cast

When I run FLog.exportLogs method it gives following error.

File file = await FLog.exportLogs();

Unhandled Exception: type 'Future<List<RecordSnapshot<int, Map<String, Object?>>>>' is not a subtype of type 'FutureOr<List<RecordSnapshot<int, Map<String, Object>>>>' in type cast

#0      FlogDao.getAllLogs
package:f_logs/…/local/flog_dao.dart:100
<asynchronous suspension>
#1      FLog._getAllLogs
package:f_logs/…/flog/flog.dart:433
<asynchronous suspension>
#2      FLog.exportLogs
package:f_logs/…/flog/flog.dart:262
<asynchronous suspension>

I am using latest null safety version 2.0.0

dart compiler points to following in flog_dao.dart file.
Future<List<Log>> getAllLogs() async { final recordSnapshots = await (_flogsStore.find( await _db, ) as FutureOr<List<RecordSnapshot<int, Map<String, Object>>>>);

Dependency on permission_handler

Error: Because f_logs >=1.2.2 depends on permission_handler ^4.0.0 and depends on permission_handler ^5.0.0+hotfix.6, f_logs >=1.2.2 is forbidden.

I would like to use permission_handler for other services, but not able to use it as log uses older version.

My pubspec.xml
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
cupertino_icons: ^0.1.2
sqflite: ^1.3.0+1
path_provider: ^1.6.7
permission_handler: ^5.0.0+hotfix.6
contacts_service: ^0.4.6

dev_dependencies:
flutter_test:
sdk: flutter
test: ^1.14.3
f_logs: 1.3.0-alpha-01
mockito: ^4.1.1

Question re. await for flogs calls

Since the Flog logging calls are async methods, do you recommend using await for the calls (to prevent possibly logging out-of-sequence), or is it ok to skip the await?

E.g.

await FLog.info(text: '1234');
await FLog.info(text: '5678');

or is this ok:

FLog.info(text: '1234');
FLog.info(text: '5678'); // will this always be logged after 1234 above?

Thanks.

Allow add log with custom timestamp

I need to add a log with a custom timestamp because I need to write a log from native (Plugin) to FLogs while the application is running.
But if I use MethodChannel to call the function from native to flutter. The timestamp would be incorrect so my log is difficult to read.
So I think if I get the timestamp from native and send it to Flutter. That can help resolve my issue.

Thanks,

Missing empty fields

I'm not quite sure why there is no empty fields in exported logs. For instance, if you don't specify exception / stacktrace it returns empty string. This is bad, since you don't know which part of the logs you are missing. This is required if you want to parse logs on other system, fe. google Stackdriver.

  static String _formatCurly(Log log, bool isDevelopmentDebuggingEnabled) {
    String output;

    if (log != null) {
      output = "{${log.className}} ";
      output += "{${log.methodName}} ";
      output += "{${log.text}} ";
      output += log.exception != 'null' ? "{${log.exception}} " : "";
      output += "{${log.logLevel.toString()}} ";
      output += "{${log.timestamp}} ";
      output += log.stacktrace != 'null' ? "{${log.stacktrace}} " : "";

      if (isDevelopmentDebuggingEnabled) {
        output += !kReleaseMode ? "{${log.dataLogType}} " : "";
        output += !kReleaseMode ? "{${log.timeInMillis}}" : "";
      }
    }

    return output;
  }

IMO it should return empty {} so we can easily split each row and parse it more easily.
This could be easily configured via cfg file to keep backward compatibility.

PR for this created: #21

How to check logs are up to date

I have noticed during my testing of the library that if I do an action in the app that generates a bunch of logs and then try to export them immediately after that, the export does not always contain all of the generated logs. It seems there may be a buffer of some sort that is still getting processed because if I wait a little longer, they eventually show up in the export if I try again. My questions are:

  1. Is there a buffer like explained above?
  2. If so, how can I check/wait till the buffer is flushed out?

Thanks!

getAllLogsByFilter failed

I got the error when call FLog.getAllLogsByFilter(...)

Unhandled Exception: type 'Future<List<RecordSnapshot<int, Map<String, Object?>>>>' is not a subtype of type 'FutureOr<List<RecordSnapshot<int, Map<String, Object>>>>' in type cast
#0 FlogDao.getAllSortedByFilter
package:f_logs/…/local/flog_dao.dart:85

#1 FLog.getAllLogsByFilter
package:f_logs/…/flog/flog.dart:300

example app doesn't run on android

Hi,
Getting this error when trying to run example app on android:

AndroidManifest.xml:22:18-91 Error:
	Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
	is also present at [androidx.core:core:1.0.2] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
	Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:13:5-36:19 to override.

iOS Permissions

Hi Thanks for this great library, it;s looking good I am thinking about using it.

I have a question regarding iOS permissions.
When do we need to ask for the permission to photo gallery? Is it just for the export file feature?
The App I am currently working on does not access photo gallery.

If I ask for the following permissions they will be rejected by the user. Does this mean flogs won't work?

NSPhotoLibraryAddUsageDescription
FLogs would like to save photos from the app to your gallery
NSPhotoLibraryUsageDescription
FLogs would like to access your photo gallery for uploading images to the app

Isn't there any alternative ways to save the logs? For example, can the logs be saved to applications instillation directory without asking for permissions and then access them from there?

My primary goal is to A: Generate logs, B: when user opens the app again send errors to API.

Concerning iOS permissions

I have installed this, and not even set it up yet, and Apple rejected it from TestFlight for a series of concerning permissions that are not even included as part of the documentation.

Why would the logging app need access too:

NSContactsUsageDescription
NSCalendarsUsageDescription
NSAppleMusicUsageDescription
NSMotionUsageDescription
NSSpeechRecognitionUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription

That is a long list of very invasive and seemingly unnecessary permissions that are required in order to even get the app accepted by TestFlight, Music, Real-time location.

Cannot log when app is in background.

I use flutter WorkManager to trigger background task.
However, Flogs not work anymore.

  Future _openDatabase() async {
    // Get a platform-specific directory where persistent app data can be stored
    final appDocumentDir = await getApplicationDocumentsDirectory();

    // Path with the form: /platform-specific-directory/demo.db
    final dbPath = join(appDocumentDir.path, DBConstants.DB_NAME);

    // Check to see if encryption is set, then provide codec
    // else init normal db with path
    var database;
    if (FLog.getDefaultConfigurations().encryptionEnabled &&
        FLog.getDefaultConfigurations().encryptionKey.isNotEmpty) {
      // Initialize the encryption codec with a user password
      var codec = getXXTeaSembastCodec(
          password: FLog.getDefaultConfigurations().encryptionKey);

      database = await databaseFactoryIo.openDatabase(dbPath, codec: codec);
    } else {
      database = await databaseFactoryIo.openDatabase(dbPath); // <====== not return in the background
    }

    // Any code awaiting the Completer's future will now start executing
    _dbOpenCompleter!.complete(database);
  }

Change type of 'exception' parameter to dynamic

In dart/flutter environment unhandled 'exceptions' may be inherited of two different base classes Error and Exception. In case we call FLog.error(...) method in a unhandled error/exception callback where both 'Error' and 'Exception' can arrive, then in case Error comes, call of Flog.error(..) trows error by itself since Error and Exception are incompatible types.

Please change type of 'exception:' parameter to dynamic as it is done in variety of Crashlitics tools may be used with Flutter.

Flutter Version 2.0

I updated the flutter and the f_logs stopped working because of the dependencies

Import only one file instead of all the package files

Thanks for the package. I'm just starting to use it, and what makes me confused is the import part from the readme.

How would I know which dart file should I import if I just want to log?

I think only importing one file is a better way and less difficult to use this package.

Flutter test is too fast to print logs

The problem is that the flutter tests are done while the _writeLogs(Log log) method waits for await _flogDao.insert(log);. Therefore, the part where the logs are printed to the console is not called anymore. [flog.dart]

if (_config.isDebuggable) {
    print(Formatter.format(log, _config));
}

To fix the problem, print has to be called before await _flogDao.insert(log);

TypeCast error when calling getAllSortedByFilter() method

Hi!
i am trying to call a method getAllSortedByFilter() and get this error
It looks like something went wrong when migrating to null safety

type 'Future<List<RecordSnapshot<int, Map<String, Object?>>>>' is not a subtype of type 'FutureOr<List<RecordSnapshot<int, Map<String, Object>>>>' in type cast 

 #0      FlogDao.getAllSortedByFilter (package:f_logs/data/local/flog_dao.dart:85:7)
<asynchronous suspension>
#1      FLog.getAllLogsByFilter (package:f_logs/model/flog/flog.dart:300:14)
<asynchronous suspension>

Flogs consumes too much memory

The current flogs.db file is over 600k lines and 250mb. It is not possible to export any logs as it results in app termination for using too much memory. Also it is not possible to clear the logs as it also results in app termination.

Flutter (Channel stable, 2.2.3, on macOS 11.3 20E232 darwin-arm, locale en-GB)
iOS 14.7.1

Concerning READ/WRITE EXTERNAL STORAGE permissions

Hey there,

Thanks for the really interesting package that is really easy to use. However, I wonder why would we need public folder permission to export the log file, since it is also possible to extract it in the in-app directory and handle it internally to share/print/etc.... Google, especially has/will become very strict to apps that require this specific permissions.

Any clarification is really helpful.

example app doesn't run with new version of localization

Hi,
I'm getting this error when trying to run the example app after adding flutter_localizations in pubspec.yaml:

Because no versions of f_logs match >1.2.1 <2.0.0 and f_logs 1.2.1 depends on intl ^0.15.8, f_logs ^1.2.1 requires intl ^0.15.8.

And because every version of flutter_localizations from sdk depends on intl 0.16.0, f_logs ^1.2.1 is incompatible with flutter_localizations from sdk.

So, because flutter_log depends on both flutter_localizations any from sdk and f_logs ^1.2.1, version solving failed.
pub get failed (1; So, because flutter_log depends on both flutter_localizations any from sdk and f_logs ^1.2.1, version solving failed.)

Error in unit test - MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)

I'm unit testing a service that relies on FLog.

My service's method contains a logging statement, FLog.info(text: 'message'); that results in the following error:

MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)

When I change the logging call to FLog.trace(text: 'message');, it works fine...guessing because it doesn't actually try and write a log entry.

Is there a way around this? Can I mock the FLog method calls? Or, do I need to create my own logging interface that calls FLog internally, and, then mock that interface in my unit tests?

New version on pub.dev

Hi,
Could you please provide a new version of the package on pub.dev containing the recent fixes?
Thanks!

FormatException: Unexpected character

Hi!

Sometimes I see this exception in Cashlytics:

Non-fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError
FormatException: Unexpected character (at character 344) ...LogLevel.INFO","stacktrace":"null"}}{"key":4723,"store":"flogs","value":... ^ . Error thrown null.
JsonCodec.decode (JsonCodec.java)
SembastDatabase.open.<fn>.import (<fn>.java:797)
SembastDatabase.open.<fn> (open.java:847)
BasicLock.synchronized (BasicLock.java:33)
SembastDatabase.open (SembastDatabase.java:638)
DatabaseOpenHelper.openDatabase.<fn> (openDatabase.java:86)
BasicLock.synchronized (BasicLock.java:33)
AppDatabase._openDatabase (AppDatabase.java:59)

image

Issues with Debug logs

Creating a DEBUG log does not appear to be working, or at that very least the commands to fetch logs are not grabbing them.

I have tried FLog.debug as well as FLog.logThis with a LogLevel of LogLevel.DEBUG and I am unable to fetch these results with either getAllLogs() or getAllLogsByFilter().

Is this functionality broken or no longer supported?

Thanks!

Problems regarding to Exports logs

Hello

On the library description, it says "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."

I see there is a function to export and this will export to an external storage, so this will save logs in a db and txt file on user's phone. But how to get these logs sent to company's email so that developer can access user's logs? I means if it just saved on user's phone and still can't access, that's not very useful right? but I couldn't find any other resources on how to do it. How to export as a zip file and then upload to server?

This might not be an issue, but I don't know how to do it and if anyone knows, please share with me, thank you!

Timestamp as DateTime when exporting log entries

Hello,

I am trying to use Flogs and was trying to export log entries and send them to a back-end server as JSON. However, the timestamp fields in Flogs comes out as strings, e.g.:
"28 October 2019 01:44:28 PM"

This format cannot be parsed by DateTime, so no easy way to turn it into a DateTime field. Storing a timestamp on the back-end server as a string in the above format is not very useful.

Is there a way to get the the timestamp as a DateTime?

Thanks.

No releases published

Hi @zubairehman!

I noticed Flogs code has no releases here on github.com and git tags are not used to keep track of specific points in a Git repository’s history.

For check how it works i added in my feature branch git tag "v2.0.0-alpha-01" and i created a (pre-)release based on this tag.
After creation release looks like example here: https://github.com/slc1973/Flogs/releases

How do you like this idea?

Further develop branch of this project is 43 commits behind master. I think it's better when contributors create pull requests to develop branch and not to master branch (how I did it too :( ). But pre-condition for this is to keep develop branch up to date. I hope I am not saying anything wrong ;) OR delete develop branch if it's not used...

Have a great time!

RangeError when trying to get method name

I am getting an error when calling any of the log methods (FLog.info, etc.) while in a method that is not directly inside of a class. I can get around this by manually passing in the method, but there seems to be a bug when this library tries to figure out the method name when the method is not directly in a class.

Code:

final logLevelReducer = combineReducers<LogLevel>([
  new TypedReducer<LogLevel, SetLogLevelAction>(_setLogLevel),
]);

LogLevel _setLogLevel(LogLevel logLevel, dynamic action) {
  final LogLevel _newLogLevel = action.logLevel;
  FLog.getDefaultConfigurations()..activeLogLevel = _newLogLevel;
  
  // Error occurs here
  FLog.info(text: 'LogLevel set to: ${FLog.getDefaultConfigurations().activeLogLevel}');

  return _newLogLevel;
}

Note: This code is in its own file. The logLevelReducer is used by a different class in another file like so:

AppState appReducer(AppState state, dynamic action) {
  return new AppState(
    ...
    logLevel: logLevelReducer(state.logLevel, action),
  );
}

Error stacktrace:

E/flutter ( 4823): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: RangeError (index): Invalid value: Only valid value is 0: 1
E/flutter ( 4823): #0      List.[] (dart:core-patch/growable_array.dart:149:60)
E/flutter ( 4823): #1      FLog._logThis (package:f_logs/model/flog/flog.dart:390:63)
E/flutter ( 4823): #2      FLog.info (package:f_logs/model/flog/flog.dart:99:5)
E/flutter ( 4823): #3      _setLogLevel (package:bowlr/reducers/log_level_reducer.dart:19:8)
E/flutter ( 4823): #4      TypedReducer.call (package:redux/src/utils.dart:111:14)
E/flutter ( 4823): #5      combineReducers.<anonymous closure> (package:redux/src/utils.dart:259:22)
E/flutter ( 4823): #6      appReducer (package:bowlr/reducers/app_state_reducer.dart:56:30)
E/flutter ( 4823): #7      Store._createReduceAndNotify.<anonymous closure> (package:redux/src/store.dart:235:21)
E/flutter ( 4823): #8      TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #9      Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #10     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #11     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #12     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #13     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #14     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #15     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #16     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #17     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #18     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #19     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #20     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #21     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #22     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #23     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #24     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #25     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #26     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #27     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #28     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #29     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #30     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #31     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #32     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #33     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #34     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #35     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #36     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #37     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #38     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #39     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #40     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #41     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #42     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #43     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #44     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #45     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #46     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #47     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #48     TypedMiddleware.call (package:redux/src/utils.dart:231:18)
E/flutter ( 4823): #49     Store._createDispatchers.<anonymous closure> (package:redux/src/store.dart:255:43)
E/flutter ( 4823): #50     TypedMiddleware.call (package

fieldOrderFormatCustom not honoured

I have the following custom config in my code
LogsConfig config = FLog.getDefaultConfigurations()
..isLogsEnabled = true
..timestampFormat = TimestampFormat.TIME_FORMAT_FULL_3
..fieldOrderFormatCustom = [
FieldName.TIMESTAMP,
FieldName.LOG_LEVEL,
FieldName.CLASSNAME,
FieldName.METHOD_NAME,
FieldName.TEXT,
FieldName.EXCEPTION,
FieldName.STACKTRACE
]
..isDebuggable = true;
FLog.applyConfigurations(config);

fieldOrderFormat is printed as default:
I/flutter ( 4209): {Assets} {loadFile} {Using the cached copy of assets/files/check.png.} {LogLevel.INFO} {2019-10-22 22:32:48}

f_logs >=1.2.2 is forbidden.

I've included permission_handler: ^5.0.0+hotfix.3 in my project and now i'm not able to inclue f_logs
Because f_logs >=1.2.2 depends on permission_handler ^4.0.0 and app depends on permission_handler ^5.0.0+hotfix.3, f_logs >=1.2.2 is forbidden.

Method for writing formatted logs to a string

I would love to have a method that returns all logs as a simple string variable. Essentially just what printLogs() does, except it shouldn't write to the console but return the result.

What do you think?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.