blog3000/Blog3000/Server/Utils/MySyslog5424v1Logger.cs

59 lines
1.7 KiB
C#

using Microsoft.Extensions.Logging;
using Syslog.Framework.Logging;
using Syslog.Framework.Logging.TransportProtocols;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Transactions;
namespace Blog3000.Server.Utils
{
public class MySyslog5424v1Logger: Syslog5424v1Logger
{
private readonly string appName;
private readonly SyslogLoggerSettings settings;
public MySyslog5424v1Logger(string name, SyslogLoggerSettings settings, string appName, string host, LogLevel lvl, IMessageSender messageSender)
: base(name, settings, host, lvl, messageSender)
{
this.settings = settings;
this.appName = appName;
}
// Duplicated due to visibility limitations
internal enum SeverityType { Emergency, Alert, Critical, Error, Warning, Notice, Informational, Debug };
protected override string FormatMessage(int priority, DateTime now, string host, string name, int? procid, int msgid, string message)
{
int level = priority - ((int)settings.FacilityType * 8);
string flag = "-";
switch(level)
{
case (int)SeverityType.Alert:
case (int)SeverityType.Critical:
case (int)SeverityType.Error:
flag = "!";
break;
case (int)SeverityType.Warning:
flag = "?";
break;
case (int)SeverityType.Notice:
flag = "*";
break;
case (int)SeverityType.Debug:
case (int)SeverityType.Informational:
flag = "-";
break;
}
//System.IO.File.AppendAllText("/tmp/D", $"....{message}....\n");
return base.FormatMessage(priority, now, host, appName, procid, msgid, $"{flag} {(name??"").Replace("Blog3000.Server.", "")}: {message}"/* message*/);
}
}
}