Я изучаю использование. NET Ядра для создания «работника» (что я бы назвал современной реализацией службы windows, которая является моим опытом -. NET Framework / Windows Сервисы ). Я действительно новичок в Io C и DI.
Я создал. NET Core Worker и создал реализацию записи NLog в CloudWatch с кодом, приведенным ниже (в моем классе Logger.cs)
public interface ILogger
{
void LogError(string message);
void LogError(string message, Exception exception);
void LogInformation(string message);
}
public class Logger : ILogger
{
private static readonly NLog.Logger _logger = LogManager.GetCurrentClassLogger();
public Logger(IConfiguration appSettings)
{
var awsTarget = new AWSTarget()
{
LogGroup = appSettings["Logging:TargetCloudWatchGroup"],
Region = appSettings["App:AwsRegion"],
Credentials = new Amazon.Runtime.BasicAWSCredentials(
appSettings["App:AwsAccessKey"],
appSettings["App:AwsSecretKey"]),
Layout = new SimpleLayout
{
Text = "${longdate} ${level:uppercase=true} ${machinename} ${message} ${exception:format=tostring}"
}
};
var config = new LoggingConfiguration();
config.AddTarget("aws", awsTarget);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, awsTarget));
LogManager.Configuration = config;
}
public void LogError(string message)
{
_logger.Error(message);
}
public void LogError(string message, Exception exception)
{
_logger.Error(exception, message);
}
public void LogInformation(string message)
{
_logger.Info(message);
}
}
Однако, когда я пытаюсь выполнить мой рабочий в режиме отладки, при запуске происходит сбой со следующей ошибкой:
Я подозреваю, что это ошибка, потому что я не зарегистрировал ILogger / Logger как некую услугу и т. д. c, используя DI, в раздел CreateHostBuilder (). Однако мне неясно, как на самом деле зарегистрировать мой регистратор. Есть много доступных вариантов, и я не уверен, что они будут работать (например, AddSingleton, AddLogging, AddHostedService и так далее). Мне не повезло, пробуя это, поэтому я надеялся, что кто-нибудь может помочь, если это возможно, с тем, как я на самом деле впрыскиваю свой регистратор в работника, и зачем это делать именно так, как указано c. Заранее спасибо.