Пользовательская раковина Serilog с инъекцией?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательская раковина Serilog с инъекцией?

Сообщение Anonymous »

У меня есть простой проект Serilog Sink, который выглядит следующим образом: < /p>

Код: Выделить всё

namespace MyApp.Cloud.Serilog.MQSink
{
public class MessageQueueSink : ILogEventSink
{
private readonly IMQProducer _MQProducerService;

public MessageQueueSink(IMQProducer mQProducerService)
{
_MQProducerService = mQProducerService;
}

public void Emit(LogEvent logEvent)
{
_MQProducerService.Produce(
new SendLog { LogEventJson = JsonConvert.SerializeObject(logEvent) }
);
}
}
}
< /code>
Потребляемая микросервиса запускаетсяvar configurationBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();

var appSettings = configurationBuilder.Get();

configurationBuilder = new ConfigurationBuilder()
.AddJsonFile("ExtendedSettings.json")
.Build();

Host.CreateDefaultBuilder(args)
.UseMyAppCloudMQ(context => context.UseSettings(appSettings.MQSettings))
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration))
.ConfigureServices((hostContext, services) =>
{
services
.AddHostedService()
.Configure(configurationBuilder.GetSection("MQSettings"));
})
.Build()
.Run();
< /code>
serilog part of appsettings.json выглядит так: < /p>
{
"serilog": {
"Using": [
"Serilog.Sinks.File",
"Serilog.Sinks.Console",
"MyApp.Cloud.Serilog.MQSink"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [
"FromLogContext",
"WithMachineName",
"WithProcessId"
],
"WriteTo": [
{
"Name": "MessageQueueSink",
"Args": {}
}
]
}
}
Проект MQSink добавляется в качестве ссылки на проект MicroService, и я вижу, что DLL MQSink заканчивается в папке BIN. Я также подозреваю, что инъекционный MQ не будет работать должным образом?
Как это может быть решено? Я не нашел какого-либо способа заставить это работать с appsetings.json , поэтому я начал смотреть на то, как связать это в коде.

Код: Выделить всё

public static class MySinkExtensions
{
public static LoggerConfiguration MessageQueueSink(
this Serilog.Configuration.LoggerSinkConfiguration loggerConfiguration,
MyApp.Cloud.MQ.Interface.IMQProducer mQProducer = null)
{
return loggerConfiguration.Sink(new MyApp.Cloud.Serilog.MQSink.MessageQueueSink(mQProducer));
}
}
< /code>
Это позволило добавить пользовательскую раковину, как это: < /p>
Host.CreateDefaultBuilder(args)
.UseMyAppCloudMQ(context => context.UseSettings(appSettings.MQSettings))
.ConfigureServices((hostContext, services) =>
{
services.Configure(
configurationBuilder.GetSection("MQSettings")
);
})
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.WriteTo.MessageQueueSink()
)
.Build()
.Run();
< /code>
Пользовательская раковина загружается, а эмит запускается, но я все еще не знаю, как вводить MQ в раковину? Также было бы намного лучше, если бы я мог сделать всю конфигурацию Serilog и погрузиться в файл appsettings.json 
.


Подробнее здесь: https://stackoverflow.com/questions/711 ... -injection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Amazon S3 раковина в Serilog не работает. Как использовать раковину S3 с serilog?
    Anonymous » » в форуме C#
    0 Ответы
    134 Просмотры
    Последнее сообщение Anonymous
  • Serilog с Elastic.Serilog.Sinks — минимальный уровень журнала не отражается
    Anonymous » » в форуме C#
    0 Ответы
    88 Просмотры
    Последнее сообщение Anonymous
  • Приемник файлов Serilog — System.MissingMethodException: метод не найден: Serilog.LoggerConfiguration
    Anonymous » » в форуме C#
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Каково точное значение слова «кухонная раковина» в программировании?
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Страница HTML & CSS с начальной загрузкой - 100% высота и раковина
    Anonymous » » в форуме Html
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»