Skip to content

Commit d124fe0

Browse files
authored
Merge pull request Baseflow#350 from Baseflow/feature/logger
Improve logging options
2 parents 101c6a1 + d14bfa3 commit d124fe0

File tree

9 files changed

+55
-9
lines changed

9 files changed

+55
-9
lines changed

flutter_cache_manager/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## [3.3.0] - 2021-11-29
2+
* Added option to manage the log level. Doesn't print failed downloads by default anymore. You can set it like this:
3+
```dart
4+
CacheManager.logLevel = CacheManagerLogLevel.verbose;
5+
```
6+
17
## [3.2.0] - 2021-11-27
28
* [Bugfix] getSingleFile now downloads a new file before completing as the outdated file might have been deleted.
39

flutter_cache_manager/example/lib/main.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ void main() {
1212
pubDevURL: 'https://pub.dev/packages/flutter_cache_manager',
1313
pages: [CacheManagerPage.createPage()],
1414
));
15+
CacheManager.logLevel = CacheManagerLogLevel.verbose;
1516
}
1617

1718
const url = 'https://blurha.sh/assets/images/img1.jpg';

flutter_cache_manager/lib/flutter_cache_manager.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export 'src/cache_manager.dart';
22
export 'src/cache_managers/cache_managers.dart';
33
export 'src/compat/file_fetcher.dart';
44
export 'src/config/config.dart';
5+
export 'src/logger.dart';
56
export 'src/result/result.dart';
67
export 'src/storage/cache_info_repositories/cache_info_repositories.dart';
78
export 'src/web/file_service.dart';

flutter_cache_manager/lib/src/cache_manager.dart

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
66
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
77
import 'package:flutter_cache_manager/src/cache_managers/base_cache_manager.dart';
88
import 'package:flutter_cache_manager/src/cache_store.dart';
9+
import 'package:flutter_cache_manager/src/logger.dart';
910
import 'package:flutter_cache_manager/src/result/download_progress.dart';
1011
import 'package:flutter_cache_manager/src/result/file_info.dart';
1112
import 'package:flutter_cache_manager/src/result/file_response.dart';
@@ -23,6 +24,8 @@ import 'config/config.dart';
2324
/// Basic cache manager implementation, which should be used as a single
2425
/// instance.
2526
class CacheManager implements BaseCacheManager {
27+
static CacheManagerLogLevel logLevel = CacheManagerLogLevel.none;
28+
2629
/// Creates a new instance of a cache manager. This can be used to retrieve
2730
/// files from the cache or download them online. The http headers are used
2831
/// for the maximum age of the files. The BaseCacheManager should only be
@@ -130,8 +133,9 @@ class CacheManager implements BaseCacheManager {
130133
withProgress = false;
131134
}
132135
} catch (e) {
133-
print(
134-
'CacheManager: Failed to load cached file for $url with error:\n$e');
136+
cacheLogger.log(
137+
'CacheManager: Failed to load cached file for $url with error:\n$e',
138+
CacheManagerLogLevel.debug);
135139
}
136140
if (cacheFile == null || cacheFile.validTill.isBefore(DateTime.now())) {
137141
try {
@@ -145,11 +149,9 @@ class CacheManager implements BaseCacheManager {
145149
}
146150
}
147151
} catch (e) {
148-
assert(() {
149-
print(
150-
'CacheManager: Failed to download file from $url with error:\n$e');
151-
return true;
152-
}());
152+
cacheLogger.log(
153+
'CacheManager: Failed to download file from $url with error:\n$e',
154+
CacheManagerLogLevel.debug);
153155
if (cacheFile == null && streamController.hasListener) {
154156
streamController.addError(e);
155157
}

flutter_cache_manager/lib/src/cache_store.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import 'package:flutter_cache_manager/src/config/config.dart';
44
import 'package:flutter_cache_manager/src/storage/file_system/file_system.dart';
55
import 'package:pedantic/pedantic.dart';
66

7+
import '../flutter_cache_manager.dart';
8+
import 'logger.dart';
79
import 'result/file_info.dart';
810
import 'storage/cache_info_repositories/cache_info_repository.dart';
911
import 'storage/cache_object.dart';
@@ -41,6 +43,9 @@ class CacheStore {
4143
return null;
4244
}
4345
final file = await fileSystem.createFile(cacheObject.relativePath);
46+
cacheLogger.log(
47+
'CacheManager: Loaded $key from cache', CacheManagerLogLevel.verbose);
48+
4449
return FileInfo(
4550
file,
4651
FileSource.Cache,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import '../flutter_cache_manager.dart';
2+
3+
/// Instance of the cache manager. Can be set to a custom one if preferred.
4+
CacheLogger cacheLogger = CacheLogger();
5+
6+
/// Log levels of the cache manager. Debug shows failed downloads and verbose
7+
/// also shows successful downloads and cache retrievals.
8+
enum CacheManagerLogLevel {
9+
none,
10+
warning,
11+
debug,
12+
verbose,
13+
}
14+
15+
/// [CacheLogger] which is used by the cache manager to log useful information
16+
class CacheLogger {
17+
/// Function to log a message on a certain loglevel
18+
void log(String message, CacheManagerLogLevel level) {
19+
if (CacheManager.logLevel.index >= level.index) {
20+
print(message);
21+
}
22+
}
23+
}

flutter_cache_manager/lib/src/storage/cache_info_repositories/cache_info_repository.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:async';
22

3+
import 'package:flutter_cache_manager/src/logger.dart';
34
import 'package:flutter_cache_manager/src/storage/cache_object.dart';
45

56
/// Base class for cache info repositories
@@ -58,7 +59,10 @@ extension MigrationExtension on CacheInfoRepository {
5859
var cacheObjects = await previousRepository.getAllObjects();
5960
await _putAll(cacheObjects);
6061
var isClosed = await previousRepository.close();
61-
if (!isClosed) print('Deleting an open repository while migrating.');
62+
if (!isClosed) {
63+
cacheLogger.log('Deleting an open repository while migrating.',
64+
CacheManagerLogLevel.warning);
65+
}
6266
await previousRepository.deleteDataFile();
6367
}
6468

flutter_cache_manager/lib/src/web/web_helper.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import 'package:pedantic/pedantic.dart';
1616
import 'package:rxdart/rxdart.dart';
1717
import 'package:uuid/uuid.dart';
1818

19+
import '../logger.dart';
20+
1921
///Flutter Cache Manager
2022
///Copyright (c) 2019 Rene Floor
2123
///Released under MIT License.
@@ -60,6 +62,8 @@ class WebHelper {
6062
_queue.add(QueueItem(url, key, authHeaders));
6163
return;
6264
}
65+
cacheLogger.log(
66+
'CacheManager: Downloading $url', CacheManagerLogLevel.verbose);
6367

6468
concurrentCalls++;
6569
var subject = _memCache[key]!;

flutter_cache_manager/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_cache_manager
22
description: Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
3-
version: 3.2.0
3+
version: 3.3.0
44
homepage: https://github.com/Baseflow/flutter_cache_manager/tree/master/flutter_cache_manager
55

66
environment:

0 commit comments

Comments
 (0)