28 lines
1.0 KiB
Dart
28 lines
1.0 KiB
Dart
import 'dart:developer' as dev;
|
|
import 'dart:io';
|
|
|
|
import 'package:dart_frog/dart_frog.dart';
|
|
import 'package:logging/logging.dart';
|
|
|
|
bool _listening = false;
|
|
|
|
Future<HttpServer> run(Handler handler, InternetAddress ip, int port) async {
|
|
final isDevelopment = (await dev.Service.getInfo()).serverUri != null;
|
|
if (!_listening) {
|
|
final logLevel = Platform.environment['LOG_LEVEL'] ?? (isDevelopment ? 'FINEST' : 'INFO');
|
|
Logger.root.level =
|
|
Level.LEVELS.firstWhere((l) => l.name == logLevel, orElse: () => Level.INFO); // defaults to Level.INFO
|
|
Logger.root.onRecord.listen((record) {
|
|
stdout.writeln('[${record.level.name}]:[${record.loggerName}] ${record.time}: ${record.message}');
|
|
if (record.level.value >= Level.WARNING.value) {
|
|
stdout.writeln(
|
|
'[${record.level.name}]:[${record.loggerName}] ${record.error ?? "No error provided"}\n${record.stackTrace ?? "No trace provided"}',
|
|
);
|
|
}
|
|
});
|
|
_listening = true;
|
|
}
|
|
|
|
return serve(handler, ip, port);
|
|
}
|