2.0.0-alpha.16
This commit is contained in:
parent
f95de91bf5
commit
803f446a01
10 changed files with 49 additions and 32 deletions
|
@ -1,3 +1,6 @@
|
|||
# 2.0.0-alpha.16
|
||||
* Use `package:lumberjack` for logging.
|
||||
|
||||
# 2.0.0-alpha.15
|
||||
* Remove dependency on `body_parser`.
|
||||
* `RequestContext` now exposes a `Stream<List<int>> get body` getter.
|
||||
|
|
|
@ -25,10 +25,10 @@ main() async {
|
|||
try {
|
||||
ctx.setAlpnProtocols(['h2'], true);
|
||||
} catch (e, st) {
|
||||
app.logger.severe(
|
||||
app.logger.error(
|
||||
'Cannot set ALPN protocol on server to `h2`. The server will only serve HTTP/1.x.',
|
||||
e,
|
||||
st,
|
||||
error: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,10 +25,10 @@ main() async {
|
|||
try {
|
||||
ctx.setAlpnProtocols(['h2'], true);
|
||||
} catch (e, st) {
|
||||
app.logger.severe(
|
||||
app.logger.error(
|
||||
'Cannot set ALPN protocol on server to `h2`. The server will only serve HTTP/1.x.',
|
||||
e,
|
||||
st,
|
||||
error: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,10 +41,10 @@ main() async {
|
|||
try {
|
||||
ctx.setAlpnProtocols(['h2'], true);
|
||||
} catch (e, st) {
|
||||
app.logger.severe(
|
||||
app.logger.error(
|
||||
'Cannot set ALPN protocol on server to `h2`. The server will only serve HTTP/1.x.',
|
||||
e,
|
||||
st,
|
||||
error: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import 'package:angel_container/mirrors.dart';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:angel_framework/http.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:lumberjack/lumberjack.dart';
|
||||
import 'package:lumberjack/io.dart';
|
||||
|
||||
main() async {
|
||||
var app = new Angel(
|
||||
|
@ -9,13 +10,7 @@ main() async {
|
|||
reflector: MirrorsReflector(),
|
||||
);
|
||||
|
||||
hierarchicalLoggingEnabled = true;
|
||||
|
||||
app.logger.onRecord.listen((rec) {
|
||||
print(rec);
|
||||
if (rec.error != null) print(rec.error);
|
||||
if (rec.stackTrace != null) print(rec.stackTrace);
|
||||
});
|
||||
app.logger.pipe(AnsiLogPrinter.toStdout());
|
||||
|
||||
// Index route. Returns JSON.
|
||||
app.get('/', (req, res) => 'Welcome to Angel!');
|
||||
|
|
|
@ -167,7 +167,8 @@ abstract class Driver<
|
|||
var error = e.error ?? e;
|
||||
var trace =
|
||||
new Trace.from(e.stackTrace ?? StackTrace.current).terse;
|
||||
app.logger.severe(e.message ?? e.toString(), error, trace);
|
||||
app.logger.error(e.message ?? e.toString(),
|
||||
error: error, stackTrace: trace);
|
||||
}
|
||||
|
||||
return handleAngelHttpException(
|
||||
|
@ -177,7 +178,7 @@ abstract class Driver<
|
|||
var zoneSpec = new ZoneSpecification(
|
||||
print: (self, parent, zone, line) {
|
||||
if (app.logger != null)
|
||||
app.logger.info(line);
|
||||
app.logger.information(line);
|
||||
else
|
||||
parent.print(zone, line);
|
||||
},
|
||||
|
@ -200,7 +201,8 @@ abstract class Driver<
|
|||
}
|
||||
|
||||
if (app.logger != null) {
|
||||
app.logger.severe(e.message ?? e.toString(), error, trace);
|
||||
app.logger.error(e.message ?? e.toString(),
|
||||
error: error, stackTrace: trace);
|
||||
}
|
||||
|
||||
return handleAngelHttpException(
|
||||
|
@ -211,8 +213,8 @@ abstract class Driver<
|
|||
// Ideally, we won't be in a position where an absolutely fatal error occurs,
|
||||
// but if so, we'll need to log it.
|
||||
if (app.logger != null) {
|
||||
app.logger.severe(
|
||||
'Fatal error occurred when processing $uri.', e, trace);
|
||||
app.logger.error('Fatal error occurred when processing $uri.',
|
||||
error: e, stackTrace: trace);
|
||||
} else {
|
||||
stderr
|
||||
..writeln('Fatal error occurred when processing '
|
||||
|
@ -253,7 +255,7 @@ abstract class Driver<
|
|||
{bool ignoreFinalizers: false}) {
|
||||
if (req == null || res == null) {
|
||||
try {
|
||||
app.logger?.severe(e, st);
|
||||
app.logger?.error(null, error: e, stackTrace: st);
|
||||
setStatusCode(response, 500);
|
||||
writeStringToResponse(response, '500 Internal Server Error');
|
||||
closeResponse(response);
|
||||
|
@ -285,7 +287,7 @@ abstract class Driver<
|
|||
void _cleanup(_) {
|
||||
if (!app.isProduction && app.logger != null) {
|
||||
var sw = req.container.make<Stopwatch>();
|
||||
app.logger.info(
|
||||
app.logger.information(
|
||||
"${res.statusCode} ${req.method} ${req.uri} (${sw?.elapsedMilliseconds ?? 'unknown'} ms)");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,9 @@ import 'package:angel_http_exception/angel_http_exception.dart';
|
|||
import 'package:angel_route/angel_route.dart';
|
||||
import 'package:combinator/combinator.dart';
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:logging/logging.dart' as dart;
|
||||
import 'package:lumberjack/logging.dart';
|
||||
import 'package:lumberjack/lumberjack.dart';
|
||||
import 'package:mime/mime.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
||||
|
@ -90,7 +92,20 @@ class Angel extends Routable {
|
|||
Angel get parent => _parent;
|
||||
|
||||
/// Outputs diagnostics and debug messages.
|
||||
Logger logger;
|
||||
Logger get logger => _logger;
|
||||
|
||||
set logger(value) {
|
||||
if (_logger != null) _logger.close();
|
||||
if (value is dart.Logger) {
|
||||
_logger = new ConvertingLogger(value);
|
||||
} else if (value is Logger) {
|
||||
_logger = value;
|
||||
} else {
|
||||
throw new ArgumentError();
|
||||
}
|
||||
}
|
||||
|
||||
Logger _logger;
|
||||
|
||||
/// Plug-ins to be called right before server startup.
|
||||
///
|
||||
|
@ -292,7 +307,7 @@ class Angel extends Routable {
|
|||
if (isProduction == true || force == true) {
|
||||
_isProduction = true;
|
||||
_flattened ??= flatten(this);
|
||||
logger?.config('Angel is running in production mode.');
|
||||
logger?.notice('Angel is running in production mode.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -352,11 +367,12 @@ class Angel extends Routable {
|
|||
|
||||
Angel(
|
||||
{Reflector reflector: const EmptyReflector(),
|
||||
this.logger,
|
||||
logger,
|
||||
this.allowMethodOverrides: true,
|
||||
this.serializer,
|
||||
this.viewGenerator})
|
||||
: super(reflector) {
|
||||
if (logger != null) this.logger = logger;
|
||||
bootstrapContainer();
|
||||
viewGenerator ??= noViewEngineConfigured;
|
||||
serializer ??= json.encode;
|
||||
|
|
|
@ -191,8 +191,8 @@ class _AngelHttp2ServerSocket extends Stream<SecureSocket>
|
|||
},
|
||||
onDone: _ctrl.close,
|
||||
onError: (e, st) {
|
||||
driver.app.logger.warning(
|
||||
'HTTP/2 incoming connection failure: ', e, st as StackTrace);
|
||||
driver.app.logger.warning('HTTP/2 incoming connection failure: ',
|
||||
error: e, stackTrace: st as StackTrace);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: angel_framework
|
||||
version: 2.0.0-alpha.15
|
||||
version: 2.0.0-alpha.16
|
||||
description: A high-powered HTTP server with dependency injection, routing and much more.
|
||||
author: Tobe O <thosakwe@gmail.com>
|
||||
homepage: https://github.com/angel-dart/angel_framework
|
||||
|
@ -17,6 +17,7 @@ dependencies:
|
|||
http_server: ^0.9.0
|
||||
http2: ">=0.1.7 <2.0.0"
|
||||
logging: ">=0.11.3 <1.0.0"
|
||||
lumberjack: ^1.0.0-rc.0
|
||||
matcher: ^0.12.0
|
||||
merge_map: ^1.0.0
|
||||
meta: ^1.0.0
|
||||
|
|
Loading…
Reference in a new issue