| // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'dart:async'; | |
| import 'package:gcloud/service_scope.dart' as ss; | |
| class LogLevel { | |
| static const LogLevel CRITICAL = LogLevel._('Critical', 4); | |
| static const LogLevel ERROR = LogLevel._('Error', 3); | |
| static const LogLevel WARNING = LogLevel._('Warning', 2); | |
| static const LogLevel INFO = LogLevel._('Info', 1); | |
| static const LogLevel DEBUG = LogLevel._('Debug', 0); | |
| final String name; | |
| final int level; | |
| const LogLevel._(this.name, this.level); | |
| @override | |
| String toString() => name; | |
| } | |
| abstract class Logging { | |
| void critical(String string, {DateTime timestamp}); | |
| void error(String string, {DateTime timestamp}); | |
| void warning(String string, {DateTime timestamp}); | |
| void info(String string, {DateTime timestamp}); | |
| void debug(String string, {DateTime timestamp}); | |
| /// Report an error, may print the error to log or report it to stackdriver | |
| /// error reporting if [stackTrace] is given and running on appengine, not | |
| /// localhost. | |
| /// | |
| /// Notice that Stackdriver Error Reporting only collects errors if [level] is | |
| /// either [LogLevel.ERROR] or [LogLevel.CRITICAL]. | |
| void reportError( | |
| LogLevel level, | |
| Object error, | |
| StackTrace stackTrace, { | |
| DateTime timestamp, | |
| }); | |
| void log( | |
| LogLevel level, | |
| String message, { | |
| DateTime timestamp, | |
| }); | |
| Future<void> flush(); | |
| } | |
| /// Register a new [Logging] object. | |
| /// | |
| /// Calling this outside of a service scope or calling it more than once inside | |
| /// the same service scope will result in an error. | |
| /// | |
| /// See the `package:gcloud/service_scope.dart` library for more information. | |
| void registerLoggingService(Logging service) { | |
| ss.register(#appengine.logging, service); | |
| } | |
| /// The logging service. | |
| /// | |
| /// Request handlers will be run inside a service scope which contains the | |
| /// modules service. | |
| Logging get loggingService => ss.lookup(#appengine.logging) as Logging; |