fartstack/backend/main.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);
}