пытается записать журналы в кеш с помощью serilog
Если это действительно требует записи журналов в кеш с использованием Serilog в соответствии со специфическим сценарием c, для этого вы можете попробовать реализовать a настраиваемый LogEventSink , как показано ниже.
public class MyMemoryCacheSink : ILogEventSink
{
private IMemoryCache memoryCache;
public MyMemoryCacheSink(IMemoryCache memoryCache)
{
this.memoryCache = memoryCache;
}
public void Emit(LogEvent logEvent)
{
memoryCache.Set("Clog", logEvent.MessageTemplate.Text);
var log = memoryCache.Get<string>("Clog");
}
}
public static class MyMemoryCacheSinkExtensions
{
public static LoggerConfiguration MyMemoryCacheSink(
this LoggerSinkConfiguration loggerConfiguration, IMemoryCache memoryCache)
{
return loggerConfiguration.Sink(new MyMemoryCacheSink(memoryCache));
}
}
Использовать настраиваемый приемник
private readonly IMemoryCache memoryCache;
public HomeController(IMemoryCache memoryCache)
{
this.memoryCache = memoryCache;
}
public IActionResult Index()
{
var logger = new ReloadableLogger(cfg => cfg.WriteTo.MyMemoryCacheSink(memoryCache));
logger.Information("hello world");
Результат теста
введите описание изображения здесь