Version 3.0.381

This commit is contained in:
Anja 2024-04-09 12:53:23 +02:00
parent f963c0a219
commit 3a363acf3a
1525 changed files with 60589 additions and 125098 deletions

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Concurrent;
using Serilog.Core;
using Serilog.Events;
namespace ShareeBike.Services.Logging
{
public class MemoryStackSink : ILogEventSink
{
private readonly IFormatProvider _formatProvider;
private static ConcurrentStack<string> _MessageStack = new ConcurrentStack<string>();
/// <summary>
/// Reads all messages an clears memory stack.
/// </summary>
/// <returns>Array of messages.</returns>
public static string[] PopAllMessages()
{
int countOfMessages = _MessageStack.Count;
if (countOfMessages <= 0)
return new string[0];
string[] messages = new string[countOfMessages];
if (_MessageStack.TryPopRange(messages) <= 0)
return new string[0];
return messages;
}
/// <summary>
/// Clears the message stack.
/// </summary>
public static void ClearMessages() => _MessageStack.Clear();
public MemoryStackSink(IFormatProvider formatProvider)
{
_formatProvider = formatProvider;
}
public void Emit(LogEvent logEvent)
{
var message = logEvent.RenderMessage(_formatProvider);
_MessageStack.Push(DateTimeOffset.Now.ToString() + " " + message);
}
}
}

View file

@ -0,0 +1,16 @@
using System;
using Serilog;
using Serilog.Configuration;
namespace ShareeBike.Services.Logging
{
public static class MemoryStackSinkExtensions
{
public static LoggerConfiguration MemoryQueueSink(
this LoggerSinkConfiguration loggerConfiguration,
IFormatProvider formatProvider = null)
{
return loggerConfiguration.Sink(new MemoryStackSink(formatProvider));
}
}
}