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

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

Issue 3005443002: Additional tools for gardening. (Closed)
Patch Set: Added 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
« no previous file with comments | « tools/gardening/lib/src/cache_new.dart ('k') | tools/gardening/lib/src/luci_api.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:io';
6 import 'package:path/path.dart' as path;
7
8 enum Level { debug, info, warning, error }
9
10 abstract class Logger {
11 Level level;
12
13 Logger(this.level);
14
15 void info(String msg, [Error, StackTrace]);
16 void warning(String msg, [Error, StackTrace]);
17 void error(String msg, [Error, StackTrace]);
18 void debug(String msg, [Error, StackTrace]);
19
20 void destroy();
21 }
22
23 String _formatErrorMessage(String msg, Exception error,
24 [StackTrace stackTrace]) {
25 if (error == null) return msg;
26 if (stackTrace == null) return msg + ": $error";
27 return msg + ": $error\n$stackTrace";
28 }
29
30 class StdOutLogger extends Logger {
31 StdOutLogger(Level level) : super(level);
32
33 @override
34 void info(String msg, [error, stackTrace]) {
35 msg = _formatErrorMessage(msg, error, stackTrace);
36 _print(Level.info, "$_datetime Info: $msg");
37 }
38
39 @override
40 void warning(String msg, [error, stackTrace]) {
41 msg = _formatErrorMessage(msg, error, stackTrace);
42 _print(Level.warning, "$_datetime Warning: $msg");
43 }
44
45 @override
46 void error(String msg, [error, stackTrace]) {
47 msg = _formatErrorMessage(msg, error, stackTrace);
48 _print(Level.error, "$_datetime Error: $msg");
49 }
50
51 @override
52 void debug(String msg, [error, stackTrace]) {
53 msg = _formatErrorMessage(msg, error, stackTrace);
54 _print(Level.debug, "$_datetime Debug: $msg");
55 }
56
57 void _print(Level logLevel, String msg) {
58 if (logLevel.index >= level.index) {
59 print(msg);
60 }
61 }
62
63 @override
64 void destroy() {
65 // nothing to do
66 }
67
68 String get _datetime => "${new DateTime.now()}";
69 }
70
71 class FileLogger extends Logger {
72 IOSink _sink;
73
74 FileLogger(String fileName, Level level, {bool append: false})
75 : super(level) {
76 var mode = append ? FileMode.APPEND : FileMode.WRITE;
77 _sink = new File(path.absolute(fileName)).openWrite(mode: mode);
78 }
79
80 @override
81 void destroy() {
82 if (_sink != null) {
83 _sink.close();
84 _sink = null;
85 }
86 }
87
88 @override
89 void info(String msg, [error, stackTrace]) {
90 msg = _formatErrorMessage(msg, error, stackTrace);
91 _print(Level.info, "$_datetime Info: $msg");
92 }
93
94 @override
95 void warning(String msg, [error, stackTrace]) {
96 msg = _formatErrorMessage(msg, error, stackTrace);
97 _print(Level.warning, "$_datetime Warning: $msg");
98 }
99
100 @override
101 void error(String msg, [error, stackTrace]) {
102 msg = _formatErrorMessage(msg, error, stackTrace);
103 _print(Level.error, "$_datetime Error: $msg");
104 }
105
106 @override
107 void debug(String msg, [error, stackTrace]) {
108 msg = _formatErrorMessage(msg, error, stackTrace);
109 _print(Level.debug, "$_datetime Debug: $msg");
110 }
111
112 void _print(Level logLevel, String msg) {
113 if (logLevel.index >= level.index && _sink != null) _sink.writeln(msg);
114 }
115
116 static String get _datetime => "${new DateTime.now()}";
117 }
OLDNEW
« no previous file with comments | « tools/gardening/lib/src/cache_new.dart ('k') | tools/gardening/lib/src/luci_api.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698