Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: pkg/logging/lib/logging.dart

Issue 420553007: updated logging package to accept functions or other non-string objects when logging (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: "bump version and add example for logging with a closure" Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/logging/README.md ('k') | pkg/logging/pubspec.yaml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/logging/lib/logging.dart
diff --git a/pkg/logging/lib/logging.dart b/pkg/logging/lib/logging.dart
index d1fb4524e04c38ddb89bfd66a5812bdf4dd50096..5f4bc2be8ae4cbaf2a85652190cbc22045c7fbba 100644
--- a/pkg/logging/lib/logging.dart
+++ b/pkg/logging/lib/logging.dart
@@ -134,10 +134,18 @@ class Logger {
* Use this method to create log entries for user-defined levels. To record a
* message at a predefined level (e.g. [Level.INFO], [Level.WARNING], etc) you
* can use their specialized methods instead (e.g. [info], [warning], etc).
+ *
+ * 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.
*/
- void log(Level logLevel, String message, [Object error,
- StackTrace stackTrace]) {
+ void log(Level logLevel, message, [Object error, StackTrace stackTrace]) {
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();
+
var record = new LogRecord(logLevel, message, fullName, error,
stackTrace);
@@ -154,35 +162,35 @@ class Logger {
}
/** Log message at level [Level.FINEST]. */
- void finest(String message, [Object error, StackTrace stackTrace]) =>
+ void finest(message, [Object error, StackTrace stackTrace]) =>
log(Level.FINEST, message, error, stackTrace);
/** Log message at level [Level.FINER]. */
- void finer(String message, [Object error, StackTrace stackTrace]) =>
+ void finer(message, [Object error, StackTrace stackTrace]) =>
log(Level.FINER, message, error, stackTrace);
/** Log message at level [Level.FINE]. */
- void fine(String message, [Object error, StackTrace stackTrace]) =>
+ void fine(message, [Object error, StackTrace stackTrace]) =>
log(Level.FINE, message, error, stackTrace);
/** Log message at level [Level.CONFIG]. */
- void config(String message, [Object error, StackTrace stackTrace]) =>
+ void config(message, [Object error, StackTrace stackTrace]) =>
log(Level.CONFIG, message, error, stackTrace);
/** Log message at level [Level.INFO]. */
- void info(String message, [Object error, StackTrace stackTrace]) =>
+ void info(message, [Object error, StackTrace stackTrace]) =>
log(Level.INFO, message, error, stackTrace);
/** Log message at level [Level.WARNING]. */
- void warning(String message, [Object error, StackTrace stackTrace]) =>
+ void warning(message, [Object error, StackTrace stackTrace]) =>
log(Level.WARNING, message, error, stackTrace);
/** Log message at level [Level.SEVERE]. */
- void severe(String message, [Object error, StackTrace stackTrace]) =>
+ void severe(message, [Object error, StackTrace stackTrace]) =>
log(Level.SEVERE, message, error, stackTrace);
/** Log message at level [Level.SHOUT]. */
- void shout(String message, [Object error, StackTrace stackTrace]) =>
+ void shout(message, [Object error, StackTrace stackTrace]) =>
log(Level.SHOUT, message, error, stackTrace);
Stream<LogRecord> _getStream() {
« no previous file with comments | « pkg/logging/README.md ('k') | pkg/logging/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698