54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
using Serilog.Formatting.Elasticsearch;
|
|
using Serilog.Formatting.Json;
|
|
|
|
namespace PluralKit.Core
|
|
{
|
|
public class ScalarFormatting
|
|
{
|
|
private static bool Write(object value, TextWriter output)
|
|
{
|
|
if (value is SystemId si)
|
|
output.Write(si.Value);
|
|
else if (value is MemberId mi)
|
|
output.Write(mi.Value);
|
|
else if (value is GroupId gi)
|
|
output.Write(gi.Value);
|
|
else if (value is SwitchId swi)
|
|
output.Write(swi.Value);
|
|
else
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
private static void WriteV(object value, TextWriter output) => Write(value, output);
|
|
|
|
public class Elasticsearch: ElasticsearchJsonFormatter
|
|
{
|
|
public Elasticsearch(bool omitEnclosingObject = false, string closingDelimiter = null,
|
|
bool renderMessage = true, IFormatProvider formatProvider = null,
|
|
ISerializer serializer = null, bool inlineFields = false,
|
|
bool renderMessageTemplate = true, bool formatStackTraceAsArray = false) : base(
|
|
omitEnclosingObject, closingDelimiter, renderMessage, formatProvider, serializer, inlineFields,
|
|
renderMessageTemplate, formatStackTraceAsArray)
|
|
{
|
|
AddLiteralWriter(typeof(SystemId), WriteV);
|
|
AddLiteralWriter(typeof(MemberId), WriteV);
|
|
AddLiteralWriter(typeof(GroupId), WriteV);
|
|
AddLiteralWriter(typeof(SwitchId), WriteV);
|
|
}
|
|
}
|
|
|
|
public class JsonValue: JsonValueFormatter
|
|
{
|
|
protected override void FormatLiteralValue(object value, TextWriter output)
|
|
{
|
|
if (Write(value, output))
|
|
return;
|
|
base.FormatLiteralValue(value, output);
|
|
}
|
|
}
|
|
}
|
|
} |