Add logging to file
This commit is contained in:
parent
e2c1e8962b
commit
7b3a3eb184
14 changed files with 95 additions and 49 deletions
|
@ -1,2 +1,4 @@
|
|||
const int THUMBNAIL_SMALL_SIZE = 128;
|
||||
const int THUMBNAIL_LARGE_SIZE = 512;
|
||||
const String SENTRY_DSN =
|
||||
"http://96780dc0b00f4c69a16c02e90d379996@3.211.17.56/2";
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import 'package:dio/dio.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'core/configuration.dart';
|
||||
import 'db/db_helper.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import 'models/face.dart';
|
||||
import 'models/photo.dart';
|
||||
|
||||
class FaceSearchManager {
|
||||
final _logger = Logger();
|
||||
final logger = Logger("FaceSearchManager");
|
||||
final _dio = Dio();
|
||||
|
||||
FaceSearchManager._privateConstructor();
|
||||
|
@ -37,6 +37,6 @@ class FaceSearchManager {
|
|||
}
|
||||
|
||||
void _onError(error) {
|
||||
_logger.e(error);
|
||||
logger.severe(error);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,38 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:photos/core/constants.dart';
|
||||
import 'core/configuration.dart';
|
||||
import 'photo_loader.dart';
|
||||
import 'photo_sync_manager.dart';
|
||||
import 'ui/home_widget.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sentry/sentry.dart';
|
||||
import 'package:super_logging/super_logging.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
final logger = Logger("main");
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
SuperLogging.main(LogConfig(
|
||||
body: _main,
|
||||
sentryDsn: SENTRY_DSN,
|
||||
logDirPath: (await getTemporaryDirectory()).path + "/logs",
|
||||
enableInDebugMode: true,
|
||||
));
|
||||
}
|
||||
|
||||
void _main() {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
Configuration.instance.init();
|
||||
PhotoSyncManager.instance.sync();
|
||||
|
||||
final SentryClient sentry = new SentryClient(
|
||||
dsn: "http://96780dc0b00f4c69a16c02e90d379996@sentry.ente.io/2");
|
||||
final SentryClient sentry = new SentryClient(dsn: SENTRY_DSN);
|
||||
|
||||
FlutterError.onError = (FlutterErrorDetails details) async {
|
||||
print('Flutter error caught by Sentry');
|
||||
FlutterError.dumpErrorToConsole(details, forceReport: true);
|
||||
_sendErrorToSentry(sentry, details.exception, details.stack);
|
||||
};
|
||||
|
@ -30,12 +44,12 @@ void main() async {
|
|||
);
|
||||
}
|
||||
|
||||
void _sendErrorToSentry(
|
||||
SentryClient sentry, Object error, StackTrace stackTrace) {
|
||||
void _sendErrorToSentry(SentryClient sentry, Object error, StackTrace stack) {
|
||||
logger.shout("Uncaught error", error, stack);
|
||||
try {
|
||||
sentry.captureException(
|
||||
exception: error,
|
||||
stackTrace: stackTrace,
|
||||
stackTrace: stack,
|
||||
);
|
||||
print('Error sent to sentry.io: $error');
|
||||
} catch (e) {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'db/db_helper.dart';
|
||||
import 'models/photo.dart';
|
||||
|
||||
class PhotoLoader extends ChangeNotifier {
|
||||
final logger = Logger();
|
||||
final logger = Logger("PhotoLoader");
|
||||
final _photos = List<Photo>();
|
||||
|
||||
PhotoLoader._privateConstructor();
|
||||
|
@ -26,7 +26,7 @@ class PhotoLoader extends ChangeNotifier {
|
|||
|
||||
void reloadPhotos() async {
|
||||
await loadPhotos();
|
||||
logger.i("Reloading...");
|
||||
logger.info("Reloading...");
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'core/event_bus.dart';
|
||||
import 'db/db_helper.dart';
|
||||
import 'events/user_authenticated_event.dart';
|
||||
|
@ -18,7 +18,7 @@ import 'core/configuration.dart';
|
|||
import 'events/remote_sync_event.dart';
|
||||
|
||||
class PhotoSyncManager {
|
||||
final _logger = Logger();
|
||||
final _logger = Logger("PhotoSyncManager");
|
||||
final _dio = Dio();
|
||||
bool _isSyncInProgress = false;
|
||||
|
||||
|
@ -36,11 +36,11 @@ class PhotoSyncManager {
|
|||
|
||||
Future<void> sync() async {
|
||||
if (_isSyncInProgress) {
|
||||
_logger.w("Sync already in progress, skipping.");
|
||||
_logger.warning("Sync already in progress, skipping.");
|
||||
return;
|
||||
}
|
||||
_isSyncInProgress = true;
|
||||
_logger.i("Syncing...");
|
||||
_logger.info("Syncing...");
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
var lastDBUpdateTimestamp = prefs.getInt(_lastDBUpdateTimestampKey);
|
||||
|
@ -62,7 +62,7 @@ class PhotoSyncManager {
|
|||
try {
|
||||
photos.add(await Photo.fromAsset(pathEntity, entity));
|
||||
} catch (e) {
|
||||
_logger.e(e);
|
||||
_logger.severe(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ class PhotoSyncManager {
|
|||
if (lastSyncTimestamp == null) {
|
||||
lastSyncTimestamp = 0;
|
||||
}
|
||||
_logger.i("Last sync timestamp: " + lastSyncTimestamp.toString());
|
||||
_logger.info("Last sync timestamp: " + lastSyncTimestamp.toString());
|
||||
|
||||
_getDiff(lastSyncTimestamp).then((diff) {
|
||||
if (diff != null) {
|
||||
|
@ -140,7 +140,7 @@ class PhotoSyncManager {
|
|||
.download(
|
||||
Configuration.instance.getHttpEndpoint() + "/" + photo.remotePath,
|
||||
localPath)
|
||||
.catchError((e) => _logger.e(e));
|
||||
.catchError((e) => _logger.severe(e));
|
||||
// TODO: Save path
|
||||
photo.pathName = localPath;
|
||||
await DatabaseHelper.instance.insertPhoto(photo);
|
||||
|
@ -155,7 +155,7 @@ class PhotoSyncManager {
|
|||
queryParameters: {
|
||||
"token": Configuration.instance.getToken(),
|
||||
"lastSyncTimestamp": lastSyncTimestamp
|
||||
}).catchError((e) => _logger.e(e));
|
||||
}).catchError((e) => _logger.severe(e));
|
||||
if (response != null) {
|
||||
Bus.instance.fire(RemoteSyncEvent(true));
|
||||
return (response.data["diff"] as List)
|
||||
|
@ -179,10 +179,10 @@ class PhotoSyncManager {
|
|||
.post(Configuration.instance.getHttpEndpoint() + "/upload",
|
||||
data: formData)
|
||||
.then((response) {
|
||||
_logger.i(response.toString());
|
||||
_logger.info(response.toString());
|
||||
var photo = Photo.fromJson(response.data);
|
||||
return photo;
|
||||
}).catchError((e) => _logger.e(e));
|
||||
}).catchError((e) => _logger.severe(e));
|
||||
}
|
||||
|
||||
Future<void> _deletePhotos() async {
|
||||
|
@ -199,7 +199,7 @@ class PhotoSyncManager {
|
|||
queryParameters: {
|
||||
"token": Configuration.instance.getToken(),
|
||||
"fileID": photo.uploadedFileId
|
||||
}).catchError((e) => _logger.e(e));
|
||||
}).catchError((e) => _logger.severe(e));
|
||||
}
|
||||
|
||||
Future _initializeDirectories() async {
|
||||
|
@ -211,7 +211,7 @@ class PhotoSyncManager {
|
|||
Future<bool> _insertPhotosToDB(
|
||||
List<Photo> photos, SharedPreferences prefs, int timestamp) async {
|
||||
await DatabaseHelper.instance.insertPhotos(photos);
|
||||
_logger.i("Inserted " + photos.length.toString() + " photos.");
|
||||
_logger.info("Inserted " + photos.length.toString() + " photos.");
|
||||
PhotoLoader.instance.reloadPhotos();
|
||||
return await prefs.setInt(_lastDBUpdateTimestampKey, timestamp);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:photos/models/album.dart';
|
||||
import 'package:photos/models/photo.dart';
|
||||
import 'package:photos/ui/gallery.dart';
|
||||
import 'package:photos/ui/gallery_app_bar_widget.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class AlbumPage extends StatefulWidget {
|
||||
final Album album;
|
||||
|
@ -15,6 +15,7 @@ class AlbumPage extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _AlbumPageState extends State<AlbumPage> {
|
||||
final logger = Logger("AlbumPageState");
|
||||
Set<Photo> _selectedPhotos = Set<Photo>();
|
||||
|
||||
@override
|
||||
|
@ -32,7 +33,7 @@ class _AlbumPageState extends State<AlbumPage> {
|
|||
setState(() {
|
||||
for (Photo deletedPhoto in deletedPhotos) {
|
||||
var index = widget.album.photos.indexOf(deletedPhoto);
|
||||
Logger().i("Deleting " + index.toString());
|
||||
logger.info("Deleting " + index.toString());
|
||||
widget.album.photos.removeAt(index);
|
||||
}
|
||||
_selectedPhotos.clear();
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:photos/core/lru_map.dart';
|
||||
import 'package:photos/models/photo.dart';
|
||||
import 'extents_page_view.dart';
|
||||
import 'zoomable_image.dart';
|
||||
import 'package:photos/utils/share_util.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class DetailPage extends StatefulWidget {
|
||||
final List<Photo> photos;
|
||||
|
@ -18,6 +18,7 @@ class DetailPage extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _DetailPageState extends State<DetailPage> {
|
||||
final logger = Logger("DetailPageState");
|
||||
bool _shouldDisableScroll = false;
|
||||
List<Photo> _photos;
|
||||
int _selectedIndex = 0;
|
||||
|
@ -34,7 +35,7 @@ class _DetailPageState extends State<DetailPage> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Logger().i("Opening " +
|
||||
logger.info("Opening " +
|
||||
_photos[_selectedIndex].toString() +
|
||||
". " +
|
||||
_selectedIndex.toString() +
|
||||
|
@ -72,7 +73,7 @@ class _DetailPageState extends State<DetailPage> {
|
|||
},
|
||||
extents: 1,
|
||||
onPageChanged: (int index) {
|
||||
Logger().i("onPageChanged to " + index.toString());
|
||||
logger.info("onPageChanged to " + index.toString());
|
||||
_selectedIndex = index;
|
||||
},
|
||||
physics: _shouldDisableScroll
|
||||
|
|
|
@ -3,7 +3,6 @@ import 'dart:collection';
|
|||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:photos/core/thumbnail_cache.dart';
|
||||
import 'package:photos/models/photo.dart';
|
||||
import 'package:photos/photo_loader.dart';
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:photos/core/event_bus.dart';
|
||||
import 'package:photos/db/db_helper.dart';
|
||||
import 'package:photos/events/remote_sync_event.dart';
|
||||
|
@ -67,6 +66,8 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
|
|||
actions.add(IconButton(
|
||||
icon: Icon(Icons.sync_problem),
|
||||
onPressed: () {
|
||||
final list = new List<int>();
|
||||
print(list[0]);
|
||||
_openSyncConfiguration(context);
|
||||
},
|
||||
));
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:photos/core/image_cache.dart';
|
||||
import 'package:photos/core/thumbnail_cache.dart';
|
||||
import 'package:photos/models/photo.dart';
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:dio/dio.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'core/configuration.dart';
|
||||
import 'core/event_bus.dart';
|
||||
|
||||
|
@ -7,7 +7,7 @@ import 'events/user_authenticated_event.dart';
|
|||
|
||||
class UserAuthenticator {
|
||||
final _dio = Dio();
|
||||
final _logger = Logger();
|
||||
final _logger = Logger("UserAuthenticator");
|
||||
|
||||
UserAuthenticator._privateConstructor();
|
||||
|
||||
|
@ -31,7 +31,7 @@ class UserAuthenticator {
|
|||
return false;
|
||||
}
|
||||
}).catchError((e) {
|
||||
_logger.e(e.toString());
|
||||
_logger.severe(e.toString());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class UserAuthenticator {
|
|||
}
|
||||
}
|
||||
}).catchError((e) {
|
||||
_logger.e(e.toString());
|
||||
_logger.severe(e.toString());
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -2,10 +2,11 @@ import 'dart:async';
|
|||
|
||||
import 'package:connectivity/connectivity.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class EndpointFinder {
|
||||
final _dio = Dio();
|
||||
final logger = Logger("EndpointFinder");
|
||||
|
||||
EndpointFinder._privateConstructor() {
|
||||
_dio.options = BaseOptions(connectTimeout: 200);
|
||||
|
@ -15,7 +16,7 @@ class EndpointFinder {
|
|||
|
||||
Future<String> findEndpoint() {
|
||||
return (Connectivity().getWifiIP()).then((ip) async {
|
||||
Logger().i(ip);
|
||||
logger.info(ip);
|
||||
final ipSplit = ip.split(".");
|
||||
var prefix = "";
|
||||
for (int index = 0; index < ipSplit.length; index++) {
|
||||
|
@ -23,7 +24,7 @@ class EndpointFinder {
|
|||
prefix += ipSplit[index] + ".";
|
||||
}
|
||||
}
|
||||
Logger().i(prefix);
|
||||
logger.info(prefix);
|
||||
|
||||
for (int i = 1; i <= 255; i++) {
|
||||
var endpoint = prefix + i.toString();
|
||||
|
@ -43,7 +44,7 @@ class EndpointFinder {
|
|||
Future<bool> ping(String endpoint) async {
|
||||
return _dio.get("http://" + endpoint + ":8080/ping").then((response) {
|
||||
if (response.data["message"] == "pong") {
|
||||
Logger().i("Found " + endpoint);
|
||||
logger.info("Found " + endpoint);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
42
pubspec.lock
42
pubspec.lock
|
@ -85,6 +85,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
device_info:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: device_info
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.2+2"
|
||||
dio:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -142,6 +149,13 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
get_ip:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: get_ip
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.0"
|
||||
http:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -163,13 +177,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
io:
|
||||
intl:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: io
|
||||
name: intl
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.3.4"
|
||||
version: "0.16.1"
|
||||
json_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -184,13 +198,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
logger:
|
||||
dependency: "direct main"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: logger
|
||||
name: logging
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.8.3"
|
||||
version: "0.11.4"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -205,6 +219,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.8"
|
||||
package_info:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_info
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.0+17"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -371,6 +392,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
super_logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: super_logging
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -28,7 +28,6 @@ dependencies:
|
|||
sqflite: ^1.3.0
|
||||
path_provider: ^1.6.5
|
||||
shared_preferences: ^0.5.6
|
||||
logger: ^0.8.3
|
||||
dio: ^3.0.9
|
||||
local_image_provider: ^1.0.0
|
||||
crypto: ^2.1.3
|
||||
|
@ -42,6 +41,7 @@ dependencies:
|
|||
connectivity: ^0.4.8+2
|
||||
event_bus: ^1.1.1
|
||||
sentry: ">=3.0.0 <4.0.0"
|
||||
super_logging: ^1.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
Loading…
Add table
Reference in a new issue