У меня есть приложение AWS Serverless API, созданное на основе .NET Core (2.1).Я настроил это с помощью регистрации в Serilog, которая использует приемник AWS Cloudwatch в качестве места назначения для ведения журнала.Этот проект зависит от общей библиотеки классов, в которой находится основная логика.
Я заметил, что не все мои сообщения о регистрации попадают в Cloudwatch.Сообщения в моих контроллерах API успешно регистрируются, но сообщения из общей библиотеки классов регистрируются только при локальном запуске, а не при использовании живого API.
Вот мои настройки ведения журнала при запуске.
var awsCredentials = new BasicAWSCredentials(config["AWS:AccessKey"], config["AWS:SecretKey"]);
if (env.IsProduction())
{
var options = new CloudWatchSinkOptions
{
LogGroupName = config["AWS:Cloudwatch:LogGroup"],
LogStreamNameProvider = new LogStreamNameProvider(),
TextFormatter = new Serilog.Formatting.Json.JsonFormatter()
};
var client = new AmazonCloudWatchLogsClient(awsCredentials, RegionEndpoint.EUWest2);
Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo
.AmazonCloudWatch(options, client)
.CreateLogger();
}
services.AddSingleton(Log.Logger);
Я также пытался добавить services.AddLogging(builder => builder.AddSerilog());
, но это не помогло.
Я использую это так:
public class TestService
{
private readonly ILogger logger;
public TestService(ILogger logger)
{
this.logger = logger;
}
public void TestMethod()
{
this.logger.Information("Test Message");
}
}