write<TState> method
void
write<TState>({
- required LogEntry<
TState> logEntry, - ExternalScopeProvider? scopeProvider,
- required StringBuffer textWriter,
override
Writes the log message to the specified StringBuffer.
Implementations can use ANSI color codes in the output for console coloring.
Implementation
@override
void write<TState>({
required LogEntry<TState> logEntry,
ExternalScopeProvider? scopeProvider,
required StringBuffer textWriter,
}) {
final message = logEntry.formatter(logEntry.state, logEntry.exception);
if (message.isEmpty && logEntry.exception == null) {
return;
}
final logLevel = logEntry.logLevel;
final logLevelString = _getLogLevelString(logLevel);
String? timestamp;
final timestampFormat = _options.timestampFormat;
if (timestampFormat != null) {
final dateTime = _options.useUtcTimestamp
? DateTime.now().toUtc()
: DateTime.now();
timestamp = _formatTimestamp(dateTime, timestampFormat);
}
final createDefaultLogMessage = message.isEmpty;
// Example:
// info: ConsoleApp.Program[10]
// Request received
final logLevelColors = _getLogLevelConsoleColors(logLevel);
final logLevelWritten = logLevelColors != null;
// Write timestamp
if (timestamp != null) {
textWriter
..write(timestamp)
..write(' ');
}
// Write log level with color if enabled
if (logLevelWritten) {
textWriter.write(logLevelColors);
}
textWriter.write(logLevelString);
if (logLevelWritten) {
textWriter.write(_defaultForegroundColor);
}
textWriter
..write(': ')
..write(logEntry.category)
..write('[')
..write(logEntry.eventId.id)
..write(']');
if (!_options.singleLine) {
textWriter.write('\n');
}
// Write scopes
_writeScopeInformation(textWriter, scopeProvider, _options.singleLine);
// Write message
if (!createDefaultLogMessage) {
textWriter.write(_messagePadding);
_writeMessage(textWriter, message, _options.singleLine);
}
// Write exception
if (logEntry.exception != null) {
_writeMessage(
textWriter,
logEntry.exception.toString(),
_options.singleLine,
);
}
if (_options.singleLine) {
textWriter.write('\n');
}
}