From 1560810b16629e2e2c0e37643d3013c4b3ea4270 Mon Sep 17 00:00:00 2001 From: Frederik Leonhardt Date: Mon, 28 Oct 2013 15:28:14 -0400 Subject: [PATCH 1/5] Removes unused imports and deprecated method usages. --- example/browser/test.dart | 2 +- example/server/test.dart | 1 - lib/browser_logging_handlers.dart | 4 ++-- lib/logging_handlers_shared.dart | 2 -- lib/server_logging_handlers.dart | 3 --- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/example/browser/test.dart b/example/browser/test.dart index e7b60bb..6d1bdc9 100644 --- a/example/browser/test.dart +++ b/example/browser/test.dart @@ -12,7 +12,7 @@ main() { attachXLoggerUi(); - query("#click").onClick.listen((_) { + querySelector("#click").onClick.listen((_) { logger.info("Button clicked"); debug("Foo", "loggerui"); }); diff --git a/example/server/test.dart b/example/server/test.dart index 4f81a3d..8f24313 100644 --- a/example/server/test.dart +++ b/example/server/test.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'package:logging_handlers/server_logging_handlers.dart'; import 'package:logging/logging.dart'; diff --git a/lib/browser_logging_handlers.dart b/lib/browser_logging_handlers.dart index d26e98c..a6133c3 100644 --- a/lib/browser_logging_handlers.dart +++ b/lib/browser_logging_handlers.dart @@ -1,7 +1,7 @@ library browser; import 'dart:html'; -import 'dart:async'; +import 'dart:async' show Timer; import 'logging_handlers_shared.dart'; import 'package:logging/logging.dart'; export 'logging_handlers_shared.dart'; @@ -14,7 +14,7 @@ export 'logging_handlers_shared.dart'; */ void attachXLoggerUi([bool addPrintHandler=true]) { Timer.run(() { - var loggerComponents = queryAll("div[is=x-loggerui]"); + var loggerComponents = querySelectorAll("div[is=x-loggerui]"); print(loggerComponents); var listener = Logger.root.onRecord.asBroadcastStream(); loggerComponents.forEach((component) { diff --git a/lib/logging_handlers_shared.dart b/lib/logging_handlers_shared.dart index 111e8fa..1a3b800 100644 --- a/lib/logging_handlers_shared.dart +++ b/lib/logging_handlers_shared.dart @@ -1,7 +1,5 @@ library logging_handlers_shared; -import 'dart:json'; - import 'package:logging/logging.dart'; import 'package:intl/intl.dart'; diff --git a/lib/server_logging_handlers.dart b/lib/server_logging_handlers.dart index c0add98..b3bfff0 100644 --- a/lib/server_logging_handlers.dart +++ b/lib/server_logging_handlers.dart @@ -1,9 +1,6 @@ library server; import 'dart:io'; -import 'dart:isolate'; -import 'dart:collection'; -import 'dart:async'; import 'package:logging/logging.dart'; From ff1c282bae3753721860e9e413536131d78a2721 Mon Sep 17 00:00:00 2001 From: Frederik Leonhardt Date: Mon, 28 Oct 2013 15:30:52 -0400 Subject: [PATCH 2/5] Adapts transformers to new LogRecord contents. Exception is now error. Exception text is now stack trace. --- lib/src/shared/map_transformer.dart | 6 +++--- lib/src/shared/string_transformer.dart | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/src/shared/map_transformer.dart b/lib/src/shared/map_transformer.dart index fcca485..fd137f3 100644 --- a/lib/src/shared/map_transformer.dart +++ b/lib/src/shared/map_transformer.dart @@ -1,7 +1,7 @@ part of logging_handlers_shared; /** - * Transforms a Log Record into a Map that can be stringified by JSON.stringify() + * Transforms a Log Record into a Map that can be stringified by JSON.encode() */ class MapTransformer implements LogRecordTransformer { @@ -15,8 +15,8 @@ class MapTransformer implements LogRecordTransformer { map["time"] = logRecord.time != null ? logRecord.time.toString() : null; map["sequenceNumber"] = logRecord.sequenceNumber; map["loggerName"] = logRecord.loggerName; - map["exceptionText"] = logRecord.exceptionText; - map["exception"] = logRecord.exception != null ? logRecord.exception.toString() : null; + map["stackTrace"] = logRecord.stackTrace != null ? logRecord.stackTrace.toString() : null; + map["error"] = logRecord.error != null ? logRecord.error.toString() : null; return map; } } diff --git a/lib/src/shared/string_transformer.dart b/lib/src/shared/string_transformer.dart index ce0dbfc..e2fff48 100644 --- a/lib/src/shared/string_transformer.dart +++ b/lib/src/shared/string_transformer.dart @@ -21,7 +21,7 @@ class StringTransformer implements LogRecordTransformer { /// Outputs the logger sequence static const SEQ = "%s"; // logger sequence static const EXCEPTION = "%x"; // logger exception - static const EXCEPTION_TEXT = "%e"; // logger exception message + static const STACK_TRACE = "%e"; // logger stack trace static const TAB = "\t"; static const NEW_LINE = "\n"; @@ -48,7 +48,7 @@ class StringTransformer implements LogRecordTransformer { DateFormat dateFormat; /// Contains the regexp pattern - static final _regexp = new RegExp("($LEVEL|$MESSAGE|$NAME|$TIME|$SEQ|$EXCEPTION|$EXCEPTION_TEXT)"); + static final _regexp = new RegExp("($LEVEL|$MESSAGE|$NAME|$TIME|$SEQ|$EXCEPTION|$STACK_TRACE)"); StringTransformer({ String this.messageFormat : StringTransformer.DEFAULT_MESSAGE_FORMAT, @@ -62,7 +62,7 @@ class StringTransformer implements LogRecordTransformer { * [exceptionFormatSuffix] and [timestampFormat] pattern. */ String transform(LogRecord logRecord) { - var formatString = logRecord.exception == null ? + var formatString = logRecord.error == null ? messageFormat : messageFormat+exceptionFormatSuffix; @@ -92,10 +92,10 @@ class StringTransformer implements LogRecordTransformer { case SEQ: return logRecord.sequenceNumber.toString(); case EXCEPTION: - if (logRecord.exception != null) return logRecord.exception.toString(); + if (logRecord.error != null) return logRecord.error.toString(); break; - case EXCEPTION_TEXT: - return logRecord.exceptionText; + case STACK_TRACE: + if (logRecord.stackTrace != null) return logRecord.stackTrace.toString(); } } From 75037c97ff171ec6aa5225e2847d791e62ae357e Mon Sep 17 00:00:00 2001 From: Frederik Leonhardt Date: Mon, 28 Oct 2013 15:33:41 -0400 Subject: [PATCH 3/5] Adapts unit tests to new LogRecord contents. Testing the date string now is based on current date since it is not cutomizable anymore. Introduces MockStackTrace to create LogRecords. Bumps version requirements in pubspec.yaml --- pubspec.yaml | 12 ++--- test/shared/shared_test.dart | 4 +- test/shared/src/transformer_tests.dart | 65 +++++++++++++++----------- 3 files changed, 46 insertions(+), 35 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 1ddf4f5..602a32a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,14 +4,14 @@ author: Chris Buckett description: A selection of handlers that you can use as targets for the "logger" pub package. Stop using print() and start using logger.info() homepage: https://github.com/chrisbu/logging_handlers environment: - sdk: '>=0.5.0+1.r21823' + sdk: '>=0.8.5' dependencies: - intl: 0.5.0+1 - web_ui: 0.4.6+2 - logging: 0.5.0+1 + intl: '>=0.8.5' + web_ui: '>=0.4.23' + logging: '>=0.8.5' dev_dependencies: - unittest: 0.5.0+1 - browser: '>=0.5.0+1' + unittest: '>=0.8.5' + browser: '>=0.8.5' #dependencies: # unittest: any \ No newline at end of file diff --git a/test/shared/shared_test.dart b/test/shared/shared_test.dart index 5c72b18..b4ed9cd 100644 --- a/test/shared/shared_test.dart +++ b/test/shared/shared_test.dart @@ -2,8 +2,10 @@ library shared_test; import 'package:logging_handlers/logging_handlers_shared.dart'; import 'package:unittest/unittest.dart'; +import 'package:unittest/mock.dart'; import 'package:logging/logging.dart'; -import 'dart:json'; +import 'package:intl/intl.dart'; +import 'dart:convert'; part 'src/transformer_tests.dart'; diff --git a/test/shared/src/transformer_tests.dart b/test/shared/src/transformer_tests.dart index 3c02d28..3f94bd2 100644 --- a/test/shared/src/transformer_tests.dart +++ b/test/shared/src/transformer_tests.dart @@ -1,6 +1,10 @@ part of shared_test; - +class MockStackTrace extends Mock implements StackTrace { + String _text; + MockStackTrace(String this._text); + toString() => _text; +} runTransformerTests() { group("transformers", () { @@ -31,49 +35,57 @@ class TestFormatterImpl extends LogRecordTransformer { } runStringTransformerTests() { + print(new MockStackTrace("Exception text").toString()); test("defaults", () { var message = "I am a message"; var loggerName = "my.logger"; - var time = DateTime.parse("2012-02-27 13:27:00.123456z"); - var logRecord = new LogRecord(Level.INFO, message, loggerName, time); + //var time = DateTime.parse("2012-02-27 13:27:00.123456z"); + var time = new DateTime.now(); + var formatter = new DateFormat('yyyy-MM-dd'); + var logRecord = new LogRecord(Level.INFO, message, loggerName); var impl = new StringTransformer(); expect(impl.transform(logRecord), - equals("2012-02-27 13:27:00.123Z\tmy.logger\t[INFO]:\tI am a message")); + contains("\tmy.logger\t[INFO]:\tI am a message")); + expect(impl.transform(logRecord), + startsWith(formatter.format(time))); }); test("defaults with exception", () { var message = "I am a message"; var loggerName = "my.logger"; - var time = DateTime.parse("2012-02-27 13:27:00.123456z"); + //var time = DateTime.parse("2012-02-27 13:27:00.123456z"); + var time = new DateTime.now(); + var formatter = new DateFormat('yyyy-MM-dd'); var exception = new Exception("I am an exception"); var logRecord = new LogRecord(Level.INFO, message, loggerName, - time, exception, - "Exception text"); + new MockStackTrace("Exception text")); var impl = new StringTransformer(); expect(impl.transform(logRecord), - equals("2012-02-27 13:27:00.123Z\tmy.logger\t[INFO]:\tI am a message\nException text\nException: I am an exception")); + contains("\tmy.logger\t[INFO]:\tI am a message\nException text\nException: I am an exception")); + expect(impl.transform(logRecord), + startsWith(formatter.format(time))); }); test("custom formats", () { var message = "I am a message"; var loggerName = "my.logger"; - var time = DateTime.parse("2012-02-27 13:27:00.123456z"); + //var time = DateTime.parse("2012-02-27 13:27:00.123456z"); + var time = new DateTime.now(); + var formatter = new DateFormat('dd-MM-yyyy'); var exception = new Exception("I am an exception"); var logRecordNoException = new LogRecord(Level.FINEST, message, - loggerName, - time); + loggerName); var logRecordWithException = new LogRecord(Level.FINEST, message, loggerName, - time, exception, - "Exception text"); + new MockStackTrace("Exception text")); var impl = new StringTransformer(messageFormat: "%s %t %n[%p]: %m", exceptionFormatSuffix: " %e %x", timestampFormat: "dd-MM-yyyy"); // Note - this prints the exception message with a sequence number. @@ -81,9 +93,9 @@ runStringTransformerTests() { // relation to other tests. For that reason, we'll check that the logged // output "contains" the expected string without the sequence number prefix expect(impl.transform(logRecordNoException), - contains(" 27-02-2012 my.logger[FINEST]: I am a message")); + contains(" ${formatter.format(time)} my.logger[FINEST]: I am a message")); expect(impl.transform(logRecordWithException), - contains(" 27-02-2012 my.logger[FINEST]: I am a message Exception text Exception: I am an exception")); + contains(" ${formatter.format(time)} my.logger[FINEST]: I am a message Exception text Exception: I am an exception")); }); } @@ -92,20 +104,19 @@ runMapTransformerTests() { test("defaults", () { var message = "I am a message"; var loggerName = "my.logger"; - var time = DateTime.parse("2012-02-27 13:27:00.123456z"); - var logRecord = new LogRecord(Level.INFO, message, loggerName, time); + var logRecord = new LogRecord(Level.INFO, message, loggerName); var impl = new MapTransformer(); var map = impl.transform(logRecord); // convert the logRecord to a map - String json = stringify(map); // convert the map to json with dart:json - Map map2 = parse(json); // convert the json back to a map + String json = JSON.encode(map); // convert the map to json with dart:convert + Map map2 = JSON.decode(json); // convert the json back to a map expect(map2["message"], equals(logRecord.message)); expect(map2["loggerName"], equals(logRecord.loggerName)); expect(map2["level"], equals(logRecord.level.name)); expect(map2["sequenceNumber"], equals(logRecord.sequenceNumber)); - expect(map2["exceptionText"], isNull); - expect(map2["exception"], isNull); + expect(map2["stackTrace"], isNull); + expect(map2["error"], isNull); expect(map2["time"], equals(logRecord.time.toString())); }); @@ -113,26 +124,24 @@ runMapTransformerTests() { test("defaults with exception", () { var message = "I am a message"; var loggerName = "my.logger"; - var time = DateTime.parse("2012-02-27 13:27:00.123456z"); var exception = new Exception("I am an exception"); var logRecord = new LogRecord(Level.INFO, message, loggerName, - time, exception, - "Exception text"); + new MockStackTrace("Exception text")); var impl = new MapTransformer(); var map = impl.transform(logRecord); // convert the logRecord to a map - String json = stringify(map); // convert the map to json with dart:json - Map map2 = parse(json); // convert the json back to a map + String json = JSON.encode(map); // convert the map to json with dart:convert + Map map2 = JSON.decode(json); // convert the json back to a map expect(map2["message"], equals(logRecord.message)); expect(map2["loggerName"], equals(logRecord.loggerName)); expect(map2["level"], equals(logRecord.level.name)); expect(map2["sequenceNumber"], equals(logRecord.sequenceNumber)); - expect(map2["exceptionText"], equals(logRecord.exceptionText)); - expect(map2["exception"], equals(logRecord.exception.toString())); + expect(map2["stackTrace"], equals(logRecord.stackTrace.toString())); + expect(map2["error"], equals(logRecord.error.toString())); expect(map2["time"], equals(logRecord.time.toString())); }); } \ No newline at end of file From 740679ff791726cca9142e311e410f2b2e4dc935 Mon Sep 17 00:00:00 2001 From: Frederik Leonhardt Date: Wed, 30 Oct 2013 00:46:00 -0400 Subject: [PATCH 4/5] Needs at least logging 0.8.7 for the changes in LogRecord. --- pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 602a32a..df403a8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,14 +4,14 @@ author: Chris Buckett description: A selection of handlers that you can use as targets for the "logger" pub package. Stop using print() and start using logger.info() homepage: https://github.com/chrisbu/logging_handlers environment: - sdk: '>=0.8.5' + sdk: '>=0.8.7' dependencies: - intl: '>=0.8.5' + intl: '>=0.8.7' web_ui: '>=0.4.23' - logging: '>=0.8.5' + logging: '>=0.8.7' dev_dependencies: - unittest: '>=0.8.5' - browser: '>=0.8.5' + unittest: '>=0.8.7' + browser: '>=0.8.7' #dependencies: # unittest: any \ No newline at end of file From 845849917d5b82a29e2eaa07a49e720748262501 Mon Sep 17 00:00:00 2001 From: Frederik Leonhardt Date: Fri, 8 Nov 2013 19:42:18 -0500 Subject: [PATCH 5/5] Fixes deprecated Options usage in build script. Updates dependency versions in preparation for Dart 1.0. --- build.dart | 3 +-- pubspec.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/build.dart b/build.dart index b0b5368..81a9fa6 100644 --- a/build.dart +++ b/build.dart @@ -1,6 +1,5 @@ import 'package:web_ui/component_build.dart'; -import 'dart:io'; void main() { - build(new Options().arguments, ['example/browser/test.html']); + build([], ['example/browser/test.html']); } \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index df403a8..772ce9d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,14 +4,14 @@ author: Chris Buckett description: A selection of handlers that you can use as targets for the "logger" pub package. Stop using print() and start using logger.info() homepage: https://github.com/chrisbu/logging_handlers environment: - sdk: '>=0.8.7' + sdk: '>=0.8.10+6 <2.0.0' dependencies: - intl: '>=0.8.7' - web_ui: '>=0.4.23' - logging: '>=0.8.7' + intl: '>=0.9.0 <0.10.0' + web_ui: '>=0.4.27' + logging: '>=0.9.0 <0.10.0' dev_dependencies: - unittest: '>=0.8.7' - browser: '>=0.8.7' + unittest: '>=0.9.0 <0.10.0' + browser: '>=0.9.0 <0.10.0' #dependencies: # unittest: any \ No newline at end of file