Skip to content

Commit 764d8d6

Browse files
committed
add error and stack trace info to BuilderTransformer logs
1 parent 5818cfb commit 764d8d6

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
## 0.3.0+4
4+
- Add error and stack trace to log nessages from the BuilderTransformer.
5+
36
## 0.3.0+3
47
- Fixed BuilderTransformer so that logs are passed on to the TransformLogger.
58

lib/src/transformer/transformer.dart

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@ abstract class BuilderTransformer implements Transformer, DeclaringTransformer {
7676
Logger.root.level = Level.ALL;
7777
var logSubscription = buildStep.logger.onRecord.listen((LogRecord log) {
7878
if (log.level <= Level.CONFIG) {
79-
transform.logger.fine(log.message);
79+
transform.logger.fine(_logRecordToMessage(log));
8080
} else if (log.level <= Level.INFO) {
81-
transform.logger.info(log.message);
81+
transform.logger.info(_logRecordToMessage(log));
8282
} else if (log.level <= Level.WARNING) {
83-
transform.logger.warning(log.message);
83+
transform.logger.warning(_logRecordToMessage(log));
8484
} else {
85-
transform.logger.error(log.message);
85+
transform.logger.error(_logRecordToMessage(log));
8686
}
8787
});
8888
await builder.build(buildStep);
@@ -91,6 +91,18 @@ abstract class BuilderTransformer implements Transformer, DeclaringTransformer {
9191
}));
9292
}
9393

94+
String _logRecordToMessage(LogRecord log) {
95+
var buffer = new StringBuffer();
96+
buffer.write(log.message);
97+
if (log.error != null) {
98+
buffer.write('\nError: ${log.error}');
99+
}
100+
if (log.stackTrace != null) {
101+
buffer.write('\nStack Trace:\n${log.stackTrace}');
102+
}
103+
return buffer.toString();
104+
}
105+
94106
@override
95107
void declareOutputs(DeclaringTransform transform) {
96108
for (var outputId in _expectedOutputs(transform.primaryId, builders)) {

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: build
2-
version: 0.3.0+3
2+
version: 0.3.0+4
33
description: A build system for Dart.
44
author: Dart Team <[email protected]>
55
homepage: https://github.com/dart-lang/build

test/transformer/transformer_test.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,10 @@ void main() {
123123
], {
124124
'a|web/a.txt': 'hello',
125125
}, {}, messages: [
126-
'warning: Warning!',
127-
'error: Error!',
126+
allOf(startsWith('warning: Warning!'), contains('SomeError'),
127+
contains('LoggingCopyBuilder.build')),
128+
allOf(startsWith('error: Error!'), contains('SomeError'),
129+
contains('LoggingCopyBuilder.build')),
128130
]);
129131
}
130132

@@ -134,8 +136,12 @@ class LoggingCopyBuilder extends CopyBuilder {
134136
@override
135137
Future build(BuildStep buildStep) async {
136138
await super.build(buildStep);
137-
buildStep.logger.warning('Warning!');
138-
buildStep.logger.severe('Error!');
139+
try {
140+
throw 'SomeError';
141+
} catch (e, s) {
142+
buildStep.logger.warning('Warning!', e, s);
143+
buildStep.logger.severe('Error!', e, s);
144+
}
139145
}
140146
}
141147

0 commit comments

Comments
 (0)