| Index: lib/logging.dart
|
| diff --git a/lib/logging.dart b/lib/logging.dart
|
| index dc83d84899f9529508050411fe10212252ea273b..42344e83d2933a24dbe1b18605ae622ce117c4df 100644
|
| --- a/lib/logging.dart
|
| +++ b/lib/logging.dart
|
| @@ -138,16 +138,26 @@ class Logger {
|
| * If [message] is a [Function], it will be lazy evaluated. Additionally, if
|
| * [message] or its evaluated value is not a [String], then 'toString()' will
|
| * be called on it and the result will be logged.
|
| + *
|
| + * The log record will contain a field for the zone in which this call was
|
| + * made.
|
| + * This can be advantagous if a log listener wants to handle records of
|
| + * different zones differently (e.g. group log records by http-request if each
|
| + * http-request handler runs in it's own zone).
|
| */
|
| - void log(Level logLevel, message, [Object error, StackTrace stackTrace]) {
|
| + void log(Level logLevel,
|
| + message,
|
| + [Object error, StackTrace stackTrace, Zone zone]) {
|
| if (isLoggable(logLevel)) {
|
| // If message is a Function, evaluate it.
|
| if (message is Function) message = message();
|
| // If message is still not a String, call toString().
|
| if (message is! String) message = message.toString();
|
| + // Only record the current zone if it was not given.
|
| + if (zone == null) zone = Zone.current;
|
|
|
| var record = new LogRecord(logLevel, message, fullName, error,
|
| - stackTrace);
|
| + stackTrace, zone);
|
|
|
| if (hierarchicalLoggingEnabled) {
|
| var target = this;
|
| @@ -314,8 +324,12 @@ class LogRecord {
|
| /** Associated stackTrace (if any) when recording errors messages. */
|
| final StackTrace stackTrace;
|
|
|
| + /** Zone of the calling code which resulted in this LogRecord. */
|
| + final Zone zone;
|
| +
|
| LogRecord(this.level, this.message, this.loggerName, [this.error,
|
| - this.stackTrace])
|
| + this.stackTrace,
|
| + this.zone])
|
| : time = new DateTime.now(),
|
| sequenceNumber = LogRecord._nextNumber++;
|
|
|
|
|