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

Side by Side Diff: tools/gardening_tools/base_lib/lib/src/logger.dart

Issue 3005443002: Additional tools for gardening. (Closed)
Patch Set: Removed accidental commit Created 3 years, 3 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 unified diff | Download patch
OLDNEW
(Empty)
1 import 'dart:io';
2 import 'package:path/path.dart' as path;
3
4 enum Level { debug, info, warning, error }
5
6 abstract class Logger {
7 Level level;
8
9 Logger(this.level);
10
11 void info(String msg, [Error, StackTrace]);
12 void warning(String msg, [Error, StackTrace]);
13 void error(String msg, [Error, StackTrace]);
14 void debug(String msg, [Error, StackTrace]);
15
16 void destroy();
17 }
18
19 String _formatErrorMessage(String msg, Exception error, StackTrace stackTrace) {
20 if (error == null) return msg;
21 msg += ": $error\n$stackTrace";
Johnni Winther 2017/08/23 12:40:47 Support nice printing of an error without a stack
22 return msg;
23 }
24
25 class StdOutLogger extends Logger {
26 StdOutLogger(Level level) : super(level);
27
28 @override
29 void info(String msg, [error, stackTrace]) {
30 msg = _formatErrorMessage(msg, error, stackTrace);
31 _print(Level.info, "$_datetime Info: $msg");
32 }
33
34 @override
35 void warning(String msg, [error, stackTrace]) {
36 msg = _formatErrorMessage(msg, error, stackTrace);
37 _print(Level.warning, "$_datetime Warning: $msg");
38 }
39
40 @override
41 void error(String msg, [error, stackTrace]) {
42 msg = _formatErrorMessage(msg, error, stackTrace);
43 _print(Level.error, "$_datetime Error: $msg");
44 }
45
46 @override
47 void debug(String msg, [error, stackTrace]) {
48 msg = _formatErrorMessage(msg, error, stackTrace);
49 _print(Level.debug, "$_datetime Debug: $msg");
50 }
51
52 void _print(Level logLevel, String msg) {
53 if (logLevel.index >= level.index) {
54 print(msg);
55 }
56 }
57
58 @override
59 void destroy() {
60 // nothing to do
61 }
62
63 String get _datetime => "${new DateTime.now()}";
64 }
65
66 class FileLogger extends Logger {
67 IOSink _sink;
68
69 FileLogger(String fileName, Level level, {bool append: false})
70 : super(level) {
71 var mode = append ? FileMode.APPEND : FileMode.WRITE;
72 _sink = new File(path.absolute(fileName)).openWrite(mode: mode);
73 }
74
75 @override
76 void destroy() {
77 if (_sink != null) {
78 _sink.close();
79 _sink = null;
80 }
81 }
82
83 @override
84 void info(String msg, [error, stackTrace]) {
85 msg = _formatErrorMessage(msg, error, stackTrace);
86 _print(Level.info, "$_datetime Info: $msg");
87 }
88
89 @override
90 void warning(String msg, [error, stackTrace]) {
91 msg = _formatErrorMessage(msg, error, stackTrace);
92 _print(Level.warning, "$_datetime Warning: $msg");
93 }
94
95 @override
96 void error(String msg, [error, stackTrace]) {
97 msg = _formatErrorMessage(msg, error, stackTrace);
98 _print(Level.error, "$_datetime Error: $msg");
99 }
100
101 @override
102 void debug(String msg, [error, stackTrace]) {
103 msg = _formatErrorMessage(msg, error, stackTrace);
104 _print(Level.debug, "$_datetime Debug: $msg");
105 }
106
107 void _print(Level logLevel, String msg) {
108 if (logLevel.index >= level.index && _sink != null) _sink.writeln(msg);
109 }
110
111 static String get _datetime => "${new DateTime.now()}";
112 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698