in src/AWS.Logger.AspNetCore/AWSLogger.cs [114:182]
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
if (!IsEnabled(logLevel))
return;
string message;
if (_customFormatter == null)
{
if (formatter == null)
throw new ArgumentNullException(nameof(formatter));
var messageText = formatter(state, exception);
// If neither a message nor an exception are provided, don't log anything (there's nothing to log, after all).
if (string.IsNullOrEmpty(messageText) && exception == null)
return;
// Format of the logged text, optional components are in {}
// {[LogLevel] }{ Scopes: => }{Category: }{EventId: }MessageText {Exception}{\n}
var messageBuilder = new StringBuilder();
Action<string> addToBuilder = token =>
{
if (string.IsNullOrEmpty(token))
return;
if (messageBuilder.Length > 0)
messageBuilder.Append(" ");
messageBuilder.Append(token);
};
if (IncludeLogLevel)
{
addToBuilder($"[{logLevel}]");
}
GetScopeInformation(messageBuilder);
if (IncludeCategory)
{
addToBuilder($"{_categoryName}:");
}
if (IncludeEventId)
{
addToBuilder($"[{eventId}]:");
}
addToBuilder(messageText);
if (IncludeException)
{
addToBuilder($"{exception}");
}
if (IncludeNewline)
{
messageBuilder.Append(Environment.NewLine);
}
message = messageBuilder.ToString();
}
else
{
message = _customFormatter(logLevel, state, exception);
// If neither a message nor an exception are provided, don't log anything (there's nothing to log, after all).
if (string.IsNullOrEmpty(message) && exception == null)
return;
}
_core.AddMessage(message);
}