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

Side by Side Diff: tools/gardening/lib/src/logger.dart

Issue 3005443002: Additional tools for gardening. (Closed)
Patch Set: Moved files from gardening_tools to gardening and incorporated changes from johnniwinther 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,
20 [StackTrace stackTrace]) {
21 if (error == null) return msg;
22 if (stackTrace == null) return msg + ": $error";
23 return msg + ": $error\n$stackTrace";
24 }
25
26 class StdOutLogger extends Logger {
27 StdOutLogger(Level level) : super(level);
28
29 @override
30 void info(String msg, [error, stackTrace]) {
31 msg = _formatErrorMessage(msg, error, stackTrace);
32 _print(Level.info, "$_datetime Info: $msg");
33 }
34
35 @override
36 void warning(String msg, [error, stackTrace]) {
37 msg = _formatErrorMessage(msg, error, stackTrace);
38 _print(Level.warning, "$_datetime Warning: $msg");
39 }
40
41 @override
42 void error(String msg, [error, stackTrace]) {
43 msg = _formatErrorMessage(msg, error, stackTrace);
44 _print(Level.error, "$_datetime Error: $msg");
45 }
46
47 @override
48 void debug(String msg, [error, stackTrace]) {
49 msg = _formatErrorMessage(msg, error, stackTrace);
50 _print(Level.debug, "$_datetime Debug: $msg");
51 }
52
53 void _print(Level logLevel, String msg) {
54 if (logLevel.index >= level.index) {
55 print(msg);
56 }
57 }
58
59 @override
60 void destroy() {
61 // nothing to do
62 }
63
64 String get _datetime => "${new DateTime.now()}";
65 }
66
67 class FileLogger extends Logger {
68 IOSink _sink;
69
70 FileLogger(String fileName, Level level, {bool append: false})
71 : super(level) {
72 var mode = append ? FileMode.APPEND : FileMode.WRITE;
73 _sink = new File(path.absolute(fileName)).openWrite(mode: mode);
74 }
75
76 @override
77 void destroy() {
78 if (_sink != null) {
79 _sink.close();
80 _sink = null;
81 }
82 }
83
84 @override
85 void info(String msg, [error, stackTrace]) {
86 msg = _formatErrorMessage(msg, error, stackTrace);
87 _print(Level.info, "$_datetime Info: $msg");
88 }
89
90 @override
91 void warning(String msg, [error, stackTrace]) {
92 msg = _formatErrorMessage(msg, error, stackTrace);
93 _print(Level.warning, "$_datetime Warning: $msg");
94 }
95
96 @override
97 void error(String msg, [error, stackTrace]) {
98 msg = _formatErrorMessage(msg, error, stackTrace);
99 _print(Level.error, "$_datetime Error: $msg");
100 }
101
102 @override
103 void debug(String msg, [error, stackTrace]) {
104 msg = _formatErrorMessage(msg, error, stackTrace);
105 _print(Level.debug, "$_datetime Debug: $msg");
106 }
107
108 void _print(Level logLevel, String msg) {
109 if (logLevel.index >= level.index && _sink != null) _sink.writeln(msg);
110 }
111
112 static String get _datetime => "${new DateTime.now()}";
113 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698