mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-06-21 21:46:27 +02:00
Version 3.0.381
This commit is contained in:
parent
f963c0a219
commit
3a363acf3a
1525 changed files with 60589 additions and 125098 deletions
47
SharedBusinessLogic/Services/Logging/MemoryStackSink.cs
Normal file
47
SharedBusinessLogic/Services/Logging/MemoryStackSink.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue