Я прошел сегодня для той же ситуации, и я выяснил, что этот настраиваемый форматер - который по умолчанию никто не устанавливает - позволяет установить, как будет записываться журнал, и, следовательно, он будет отображаться в журналах AWS.
Вы можете начать создавать простой форматтер с помощью интерфейса, который предоставляет Serilog, и адаптировать его для наилучшего соответствия вашей ситуации.
public class AWSTextFormatter : ITextFormatter
{
public void Format(LogEvent logEvent, TextWriter output)
{
output.Write("Timestamp - {0} | Level - {1} | Message {2} {3}", logEvent.Timestamp, logEvent.Level, logEvent.MessageTemplate, output.NewLine);
if (logEvent.Exception != null)
{
output.Write("Exception - {0}", logEvent.Exception);
}
}
}
Используя это
var customFormatter = new AWSTextFormatter();
var options = new CloudWatchSinkOptions
{
// the name of the CloudWatch Log group for logging
LogGroupName = logGroupName,
// the main formatter of the log event
TextFormatter = customFormatter,
// other defaults defaults
MinimumLogEventLevel = LogEventLevel.Information,
BatchSizeLimit = 100,
QueueSizeLimit = 10000,
Period = TimeSpan.FromSeconds(10),
CreateLogGroup = true,
LogStreamNameProvider = new DefaultLogStreamProvider(),
RetryAttempts = 5
};
В этом методе вы можете получить доступ к LogEvent и получить всю необходимую вам информацию. Этот похож на то, что они используют в lib, пишут событие, исключение и некоторые детали.
Рекомендуется проверить пользовательский форматер, локально записывающий журнал в некоторый файл
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile(customFormatter, Path.Combine(env.ContentRootPath, "Logs", "Log-{Date}.txt"))
.WriteTo.AmazonCloudWatch(options, client)
.CreateLogger();
Что показывает журнал:
Timestamp - 1/9/2019 11:52:11 AM -02:00 | Level - Fatal | Message PROBLEM STARTING
APPLICATION
Exception - Couchbase.Configuration.Server.Serialization.BootstrapException: Could not
bootstrap - check inner exceptions for details.