Updated
This commit is contained in:
@@ -150,6 +150,34 @@ public static class LogTypeConverter
|
||||
}
|
||||
}
|
||||
|
||||
public enum SyslogFacility
|
||||
{
|
||||
Kernel = 0, // 0 - Kernel messages
|
||||
UserLevel = 1, // 1 - User-level messages
|
||||
MailSystem = 2, // 2 - Mail system
|
||||
Daemon = 3, // 3 - Daemon messages
|
||||
Auth = 4, // 4 - Security/authorization messages
|
||||
Syslog = 5, // 5 - Messages generated by syslogd
|
||||
Lpr = 6, // 6 - Line printer subsystem
|
||||
News = 7, // 7 - Network news subsystem
|
||||
UUCP = 8, // 8 - UUCP subsystem
|
||||
Clock = 9, // 9 - Clock daemon
|
||||
AuthPriv = 10, // 10 - Security/authorization messages (privileged)
|
||||
Ftp = 11, // 11 - FTP daemon
|
||||
Ntp = 12, // 12 - NTP subsystem
|
||||
Audit = 13, // 13 - Audit messages
|
||||
Alert = 14, // 14 - Log alert messages
|
||||
Cron = 15, // 15 - Cron daemon
|
||||
Local0 = 16, // 16 - Local use 0 (custom usage)
|
||||
Local1 = 17, // 17 - Local use 1 (custom usage)
|
||||
Local2 = 18, // 18 - Local use 2 (custom usage)
|
||||
Local3 = 19, // 19 - Local use 3 (custom usage)
|
||||
Local4 = 20, // 20 - Local use 4 (custom usage)
|
||||
Local5 = 21, // 21 - Local use 5 (custom usage)
|
||||
Local6 = 22, // 22 - Local use 6 (custom usage)
|
||||
Local7 = 23 // 23 - Local use 7 (custom usage)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Message severity.
|
||||
/// </summary>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<TargetFrameworks>.netstandard2.1; net6.0; net7.0; net8.0; net4.8;</TargetFrameworks>
|
||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<FileVersion>1.3.8</FileVersion>
|
||||
<FileVersion>1.3.9</FileVersion>
|
||||
<Authors>EonaCat (Jeroen Saey)</Authors>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<Company>EonaCat (Jeroen Saey)</Company>
|
||||
@@ -24,7 +24,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<EVRevisionFormat>1.3.8+{chash:10}.{c:ymd}</EVRevisionFormat>
|
||||
<EVRevisionFormat>1.3.9+{chash:10}.{c:ymd}</EVRevisionFormat>
|
||||
<EVDefault>true</EVDefault>
|
||||
<EVInfo>true</EVInfo>
|
||||
<EVTagMatch>v[0-9]*</EVTagMatch>
|
||||
|
||||
@@ -9,9 +9,9 @@ public interface ILogManager
|
||||
{
|
||||
Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null,
|
||||
string customSplunkSourceType = null, string grayLogFacility = null, string grayLogSource = null,
|
||||
string grayLogVersion = "1.1");
|
||||
string grayLogVersion = "1.1", bool disableSplunkSSL = false);
|
||||
|
||||
Task WriteAsync(Exception exception, string module = null, string method = null, bool criticalException = false,
|
||||
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null,
|
||||
string grayLogSource = null, string grayLogVersion = "1.1");
|
||||
string grayLogSource = null, string grayLogVersion = "1.1", bool disableSplunkSSL = false);
|
||||
}
|
||||
@@ -30,6 +30,44 @@ internal static class LogHelper
|
||||
private static readonly string MachineName = Environment.MachineName;
|
||||
private static readonly string HostName = Dns.GetHostName();
|
||||
|
||||
internal static string ConvertToSyslogRfc5424(LoggerSettings settings, ELogType logType, string currentMessage, DateTime dateTime, string category = null)
|
||||
{
|
||||
string formattedMessage = FormatMessageWithHeader(settings, logType, currentMessage, dateTime, category);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(formattedMessage))
|
||||
{
|
||||
return formattedMessage;
|
||||
}
|
||||
|
||||
string hostname = HostName;
|
||||
|
||||
int facility = (int)SyslogFacility.Local0;
|
||||
int severity = (int)logType;
|
||||
int pri = (facility * 8) + severity;
|
||||
string timestamp = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
|
||||
string syslogMessage = $"<{pri}>1 {timestamp} {hostname} {settings?.Id ?? "EonaCatLogger"} - - {formattedMessage}";
|
||||
return syslogMessage;
|
||||
}
|
||||
|
||||
internal static string ConvertToSyslogRfc3164(LoggerSettings settings, ELogType logType, string currentMessage, DateTime dateTime, string category = null)
|
||||
{
|
||||
string formattedMessage = FormatMessageWithHeader(settings, logType, currentMessage, dateTime, category);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(formattedMessage))
|
||||
{
|
||||
return formattedMessage;
|
||||
}
|
||||
|
||||
string hostname = HostName;
|
||||
int facility = (int)SyslogFacility.Local0;
|
||||
int severity = (int)logType;
|
||||
int pri = (facility * 8) + severity;
|
||||
string timestamp = dateTime.ToString("MMM dd HH:mm:ss");
|
||||
string syslogMessage = $"<{pri}>{timestamp} {hostname} {settings?.Id ?? "EonaCatLogger"}: {formattedMessage}";
|
||||
return syslogMessage;
|
||||
}
|
||||
|
||||
|
||||
internal static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage,
|
||||
DateTime dateTime, string category = null)
|
||||
{
|
||||
@@ -62,9 +100,12 @@ internal static class LogHelper
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
internal static void SendToConsole(LoggerSettings settings, ELogType logType, string message, bool writeToConsole)
|
||||
internal static void SendToConsole(LoggerSettings settings, ELogType logType, string message)
|
||||
{
|
||||
if (settings == null || !writeToConsole || string.IsNullOrWhiteSpace(message)) return;
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (settings.EnableColors && settings.Colors != null)
|
||||
{
|
||||
@@ -121,6 +162,7 @@ internal static class LogHelper
|
||||
Log(logger, logType.ToLogLevel(), message);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsLogLevelEnabled(LoggerSettings loggerSettings, ELogType logType)
|
||||
{
|
||||
if (loggerSettings == null)
|
||||
@@ -129,18 +171,50 @@ internal static class LogHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
var isEnabled = loggerSettings.MaxLogType != ELogType.NONE && logType <= loggerSettings.MaxLogType;
|
||||
if (!isEnabled)
|
||||
var isEnabled = loggerSettings.TypesToLog == null || loggerSettings.TypesToLog.Count == 0 || loggerSettings.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
OnLogLevelDisabled?.Invoke(null, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled." });
|
||||
return false;
|
||||
}
|
||||
|
||||
return isEnabled;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void SetLogLevel(LoggerSettings settings, ELogType logType)
|
||||
public static void AddLogLevel(LoggerSettings settings, ELogType logType)
|
||||
{
|
||||
settings.MaxLogType = logType;
|
||||
if (logType == ELogType.NONE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (settings.TypesToLog == null || settings.TypesToLog.Count == 0)
|
||||
{
|
||||
settings.TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!settings.TypesToLog.Contains(logType))
|
||||
{
|
||||
settings.TypesToLog.Add(logType);
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveLogLevel(LoggerSettings settings, ELogType logType)
|
||||
{
|
||||
if (logType == ELogType.NONE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (settings.TypesToLog == null || settings.TypesToLog.Count == 0)
|
||||
{
|
||||
settings.TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!settings.TypesToLog.Contains(logType))
|
||||
{
|
||||
return;
|
||||
}
|
||||
settings.TypesToLog.Remove(logType);
|
||||
}
|
||||
|
||||
private static void Log(ILogger logger, LogLevel logLevel, string message)
|
||||
@@ -148,7 +222,12 @@ internal static class LogHelper
|
||||
logger.Log(logLevel, message);
|
||||
}
|
||||
|
||||
public static async Task SendToSplunkServersAsync(LoggerSettings settings, SplunkPayload splunkPayload)
|
||||
private static bool TryGetEnumValue<TEnum>(string value, out TEnum result) where TEnum : struct, Enum
|
||||
{
|
||||
return Enum.TryParse(value, true, out result);
|
||||
}
|
||||
|
||||
private static async Task SendToSplunkServersAsync(LoggerSettings settings, SplunkPayload splunkPayload, string logType, bool disableSplunkSSL = false)
|
||||
{
|
||||
if (settings == null || splunkPayload == null)
|
||||
{
|
||||
@@ -166,7 +245,18 @@ internal static class LogHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await splunkServer.SendAsync(splunkPayload);
|
||||
bool isValid = TryGetEnumValue(logType, out ELogType currentLogType);
|
||||
if (isValid)
|
||||
{
|
||||
var isEnabled = splunkServer.TypesToLog == null || splunkServer.TypesToLog.Count == 0 || splunkServer.TypesToLog.Contains(currentLogType);
|
||||
if (currentLogType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
splunkServer?.DisposeHttpClient();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var response = await splunkServer.SendAsync(splunkPayload, disableSplunkSSL);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LogError($"Failed to send log to Splunk '{splunkServer.SplunkHecUrl}'. Status code: {response.StatusCode}");
|
||||
@@ -184,7 +274,7 @@ internal static class LogHelper
|
||||
/// <summary>
|
||||
/// Overload for sending a simple log message to Splunk.
|
||||
/// </summary>
|
||||
public static async Task SendToSplunkServersAsync(LoggerSettings settings, string logType, string message)
|
||||
public static async Task SendToSplunkServersAsync(LoggerSettings settings, string logType, string message, bool disableSplunkSSL = false)
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
@@ -200,10 +290,10 @@ internal static class LogHelper
|
||||
{
|
||||
Host = Environment.MachineName,
|
||||
EventData = message,
|
||||
SourceType = logType
|
||||
SourceType = logType,
|
||||
};
|
||||
|
||||
await SendToSplunkServersAsync(settings, splunkPayload);
|
||||
await SendToSplunkServersAsync(settings, splunkPayload, logType, disableSplunkSSL);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -215,7 +305,7 @@ internal static class LogHelper
|
||||
}
|
||||
|
||||
|
||||
internal static async Task SendToGrayLogServersAsync(LoggerSettings settings, string message, ELogType logLevel,
|
||||
internal static async Task SendToGrayLogServersAsync(LoggerSettings settings, string message, ELogType logType,
|
||||
string facility, string source, string version = "1.1")
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
@@ -235,7 +325,7 @@ internal static class LogHelper
|
||||
version,
|
||||
host = MachineName,
|
||||
short_message = message,
|
||||
level = logLevel.ToGrayLogLevel(),
|
||||
level = logType.ToGrayLogLevel(),
|
||||
facility,
|
||||
source,
|
||||
timestamp = DateTime.UtcNow.ToUnixTimestamp()
|
||||
@@ -249,6 +339,18 @@ internal static class LogHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
var isEnabled = grayLogServer.TypesToLog == null || grayLogServer.TypesToLog.Count == 0 || grayLogServer.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
grayLogServer?.DisposeUdp();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!grayLogServer.IsConnected)
|
||||
{
|
||||
grayLogServer.SetUdp();
|
||||
}
|
||||
|
||||
if (messageBytes.Length <= MaxUdpPacketSize)
|
||||
{
|
||||
// Send via UDP (single packet)
|
||||
@@ -302,7 +404,7 @@ internal static class LogHelper
|
||||
}
|
||||
}
|
||||
|
||||
internal static async Task SendToSysLogServersAsync(LoggerSettings settings, string message)
|
||||
internal static async Task SendToSysLogServersAsync(LoggerSettings settings, string message, ELogType logType, DateTime dateTime, string category)
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
@@ -322,6 +424,27 @@ internal static class LogHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
var isEnabled = server.TypesToLog == null || server.TypesToLog.Count == 0 || server.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
server?.DisposeUdp();
|
||||
return;
|
||||
}
|
||||
|
||||
if (server.ConvertToRfc5424)
|
||||
{
|
||||
message = ConvertToSyslogRfc5424(settings, logType, message, dateTime, category);
|
||||
}
|
||||
else if (server.ConvertToRfc3164)
|
||||
{
|
||||
message = ConvertToSyslogRfc3164(settings, logType, message, dateTime, category);
|
||||
}
|
||||
|
||||
if (!server.IsConnected)
|
||||
{
|
||||
server.SetUdp();
|
||||
}
|
||||
|
||||
var data = Encoding.UTF8.GetBytes(message);
|
||||
|
||||
if (data.Length <= MaxUdpPacketSize)
|
||||
@@ -353,7 +476,7 @@ internal static class LogHelper
|
||||
await Task.WhenAll(tasks);
|
||||
}
|
||||
|
||||
internal static async Task SendToTcpLogServersAsync(LoggerSettings settings, string message)
|
||||
internal static async Task SendToTcpLogServersAsync(LoggerSettings settings, string message, ELogType logType)
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
@@ -371,9 +494,19 @@ internal static class LogHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
var isEnabled = server.TypesToLog == null || server.TypesToLog.Count == 0 || server.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
server?.DisposeTcp();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!server.IsConnected)
|
||||
{
|
||||
server.SetTcp();
|
||||
}
|
||||
|
||||
var data = Encoding.UTF8.GetBytes(message);
|
||||
server.DisposeTcp();
|
||||
server.SetTcp();
|
||||
await server.WriteAsync(data).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -389,7 +522,7 @@ internal static class LogHelper
|
||||
await Task.WhenAll(tasks);
|
||||
}
|
||||
|
||||
internal static async Task SendToUdpLogServersAsync(LoggerSettings settings, string message)
|
||||
internal static async Task SendToUdpLogServersAsync(LoggerSettings settings, string message, ELogType logType)
|
||||
{
|
||||
if (settings == null || string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
@@ -407,9 +540,19 @@ internal static class LogHelper
|
||||
{
|
||||
try
|
||||
{
|
||||
var isEnabled = server.TypesToLog == null || server.TypesToLog.Count == 0 || server.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
server?.DisposeUdp();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!server.IsConnected)
|
||||
{
|
||||
server.SetUdp();
|
||||
}
|
||||
|
||||
var data = Encoding.UTF8.GetBytes(message);
|
||||
server.DisposeUdp();
|
||||
server.SetUdp();
|
||||
await server.WriteAsync(data).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace EonaCat.Logger.Managers
|
||||
public async Task WriteAsync(Exception exception, string module = null, string method = null,
|
||||
bool criticalException = false,
|
||||
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null,
|
||||
string grayLogSource = null, string grayLogVersion = "1.1")
|
||||
string grayLogSource = null, string grayLogVersion = "1.1", bool disableSplunkSSL = false)
|
||||
{
|
||||
if (exception == null)
|
||||
{
|
||||
@@ -89,13 +89,13 @@ namespace EonaCat.Logger.Managers
|
||||
await WriteAsync(exception.FormatExceptionToMessage(module, method),
|
||||
criticalException ? ELogType.CRITICAL : ELogType.ERROR, writeToConsole,
|
||||
customSplunkSourceType, grayLogFacility, grayLogSource,
|
||||
grayLogVersion);
|
||||
grayLogVersion, disableSplunkSSL = false);
|
||||
}
|
||||
|
||||
public async Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null,
|
||||
string customSplunkSourceType = null,
|
||||
string grayLogFacility = null, string grayLogSource = null,
|
||||
string grayLogVersion = "1.1")
|
||||
string grayLogVersion = "1.1", bool disableSplunkSSL = false)
|
||||
{
|
||||
if (logType == ELogType.NONE)
|
||||
{
|
||||
@@ -103,7 +103,7 @@ namespace EonaCat.Logger.Managers
|
||||
}
|
||||
|
||||
await InternalWriteAsync(CurrentDateTime, message, logType, writeToConsole,
|
||||
customSplunkSourceType, grayLogFacility, grayLogSource, grayLogVersion);
|
||||
customSplunkSourceType, grayLogFacility, grayLogSource, grayLogVersion, disableSplunkSSL);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -121,7 +121,6 @@ namespace EonaCat.Logger.Managers
|
||||
var settings = new LoggerSettings
|
||||
{
|
||||
Id = "EonaCatLogger",
|
||||
MaxLogType = ELogType.INFO
|
||||
};
|
||||
return settings;
|
||||
}
|
||||
@@ -164,7 +163,7 @@ namespace EonaCat.Logger.Managers
|
||||
LoggerFactory?.Dispose();
|
||||
|
||||
IServiceCollection serviceCollection = new ServiceCollection();
|
||||
serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.MaxLogType.ToLogLevel())
|
||||
serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.TypesToLog.Min().ToLogLevel())
|
||||
.AddEonaCatFileLogger(configuration =>
|
||||
{
|
||||
var fileLoggerOptions = Settings.FileLoggerOptions;
|
||||
@@ -193,7 +192,7 @@ namespace EonaCat.Logger.Managers
|
||||
|
||||
private async Task InternalWriteAsync(DateTime dateTime, string message, ELogType logType = ELogType.INFO,
|
||||
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null,
|
||||
string grayLogSource = null, string grayLogVersion = "1.1")
|
||||
string grayLogSource = null, string grayLogVersion = "1.1", bool disableSplunkSSL = false)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(message) || logType == ELogType.NONE || !IsLogLevelEnabled(logType) || _isDisposing)
|
||||
{
|
||||
@@ -212,16 +211,16 @@ namespace EonaCat.Logger.Managers
|
||||
|
||||
if (writeToConsoleValue)
|
||||
{
|
||||
LogHelper.SendToConsole(Settings, logType, messageWithHeader, true);
|
||||
LogHelper.SendToConsole(Settings, logType, messageWithHeader);
|
||||
}
|
||||
|
||||
var tasks = new List<Task>(5)
|
||||
{
|
||||
LogHelper.SendToSysLogServersAsync(Settings, messageWithHeader),
|
||||
LogHelper.SendToSplunkServersAsync(Settings, customSplunkSourceType ?? logType.ToString(), messageWithHeader),
|
||||
LogHelper.SendToSysLogServersAsync(Settings, message, logType, dateTime, _category),
|
||||
LogHelper.SendToSplunkServersAsync(Settings, customSplunkSourceType ?? logType.ToString(), messageWithHeader, disableSplunkSSL),
|
||||
LogHelper.SendToGrayLogServersAsync(Settings, messageWithHeader, logType, grayLogFacility, grayLogSource, grayLogVersion),
|
||||
LogHelper.SendToTcpLogServersAsync(Settings, messageWithHeader),
|
||||
LogHelper.SendToUdpLogServersAsync(Settings, messageWithHeader),
|
||||
LogHelper.SendToTcpLogServersAsync(Settings, messageWithHeader, logType),
|
||||
LogHelper.SendToUdpLogServersAsync(Settings, messageWithHeader, logType),
|
||||
};
|
||||
|
||||
if (tasks.Count > 0)
|
||||
@@ -247,12 +246,13 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
var isEnabled = Settings.MaxLogType != ELogType.NONE && logType <= Settings.MaxLogType;
|
||||
if (!isEnabled)
|
||||
var isEnabled = Settings.TypesToLog == null || Settings.TypesToLog.Count == 0 || Settings.TypesToLog.Contains(logType);
|
||||
if (logType == ELogType.NONE || !isEnabled)
|
||||
{
|
||||
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled, cannot log message" });
|
||||
return false;
|
||||
}
|
||||
return isEnabled;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
@@ -321,13 +321,16 @@ namespace EonaCat.Logger.Managers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add sysLog server
|
||||
/// Add Syslog server
|
||||
/// </summary>
|
||||
/// <param name="address"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <param name="convertToRfc5424"></param>
|
||||
/// <param name="convertToRfc3164"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddSyslogServer(string address, int port, string nickName = null)
|
||||
public bool AddSyslogServer(string address, int port, string nickName = null, List<ELogType> typesToLog = null, bool convertToRfc5424 = false, bool convertToRfc3164 = false)
|
||||
{
|
||||
if (Settings.SysLogServers == null)
|
||||
{
|
||||
@@ -339,7 +342,7 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
Settings.SysLogServers.Add(new Syslog(address, port));
|
||||
Settings.SysLogServers.Add(new Syslog(address, port, nickName, typesToLog, convertToRfc5424, convertToRfc3164));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -389,10 +392,11 @@ namespace EonaCat.Logger.Managers
|
||||
/// </summary>
|
||||
/// <param name="splunkHecUrl"></param>
|
||||
/// <param name="splunkHecToken"></param>
|
||||
/// <param name="httpClientHandler">(optional)</param>
|
||||
/// <param name="nickName">(optional)</param>
|
||||
/// <param name="httpClientHandler"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddSplunkServer(string splunkHecUrl, string splunkHecToken, HttpClientHandler httpClientHandler = null, string nickName = null)
|
||||
public bool AddSplunkServer(string splunkHecUrl, string splunkHecToken, HttpClientHandler httpClientHandler = null, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
if (Settings.SplunkServers == null)
|
||||
{
|
||||
@@ -404,7 +408,7 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
Settings.SplunkServers.Add(new Splunk(splunkHecUrl, splunkHecToken, httpClientHandler, nickName));
|
||||
Settings.SplunkServers.Add(new Splunk(splunkHecUrl, splunkHecToken, httpClientHandler, nickName, typesToLog));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -450,13 +454,14 @@ namespace EonaCat.Logger.Managers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add GrayLog server
|
||||
/// Add Graylog server
|
||||
/// </summary>
|
||||
/// <param name="address"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddGrayLogServer(string address, int port, string nickName = null)
|
||||
public bool AddGrayLogServer(string address, int port, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
if (Settings.GrayLogServers == null)
|
||||
{
|
||||
@@ -468,7 +473,7 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
Settings.GrayLogServers.Add(new Graylog(address, port));
|
||||
Settings.GrayLogServers.Add(new Graylog(address, port, nickName, typesToLog));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -514,13 +519,14 @@ namespace EonaCat.Logger.Managers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add Tcp server
|
||||
/// Add Tcp Server
|
||||
/// </summary>
|
||||
/// <param name="address"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddTcpLogServer(string address, int port, string nickName = null)
|
||||
public bool AddTcpLogServer(string address, int port, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
if (Settings.TcpServers == null)
|
||||
{
|
||||
@@ -532,7 +538,7 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
Settings.TcpServers.Add(new Tcp(address, port));
|
||||
Settings.TcpServers.Add(new Tcp(address, port, nickName, typesToLog));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -578,13 +584,14 @@ namespace EonaCat.Logger.Managers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add Udp server
|
||||
/// Add Udp Server
|
||||
/// </summary>
|
||||
/// <param name="address"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddUdpLogServer(string address, int port, string nickName = null)
|
||||
public bool AddUdpLogServer(string address, int port, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
if (Settings.UdpServers == null)
|
||||
{
|
||||
@@ -596,7 +603,7 @@ namespace EonaCat.Logger.Managers
|
||||
return false;
|
||||
}
|
||||
|
||||
Settings.UdpServers.Add(new Udp(address, port));
|
||||
Settings.UdpServers.Add(new Udp(address, port, nickName, typesToLog));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ public class LoggerSettings
|
||||
private FileLoggerOptions _fileLoggerOptions;
|
||||
|
||||
private string _headerFormat = "{ts} {host} {category} {thread} {sev}";
|
||||
private int _maxMessageLength = 1024;
|
||||
private string _timestampFormat = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
/// <summary>
|
||||
@@ -126,9 +125,22 @@ public class LoggerSettings
|
||||
}
|
||||
}
|
||||
|
||||
public ELogType MaxLogType { get; set; } = ELogType.INFO;
|
||||
private List<ELogType> _logTypes = new List<ELogType> { ELogType.INFO, ELogType.WARNING, ELogType.ERROR, ELogType.TRAFFIC, ELogType.DEBUG, ELogType.CRITICAL, ELogType.TRACE };
|
||||
public List<ELogType> TypesToLog
|
||||
{
|
||||
get
|
||||
{
|
||||
return _logTypes;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
_logTypes = value;
|
||||
}
|
||||
}
|
||||
|
||||
public List<Servers.Syslog.Syslog> SysLogServers { get; internal set; }
|
||||
public List<Logger.Servers.Splunk.Splunk> SplunkServers { get; internal set; }
|
||||
public List<Servers.Splunk.Splunk> SplunkServers { get; internal set; }
|
||||
|
||||
public List<Graylog> GrayLogServers { get; internal set; }
|
||||
public List<Servers.Tcp.Tcp> TcpServers { get; internal set; }
|
||||
@@ -232,4 +244,100 @@ public class LoggerSettings
|
||||
{
|
||||
OnLog = null;
|
||||
}
|
||||
|
||||
public void AllowAllLogTypes()
|
||||
{
|
||||
TypesToLog.Clear();
|
||||
}
|
||||
|
||||
public void LogInfo()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.INFO))
|
||||
{
|
||||
TypesToLog.Add(ELogType.INFO);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogWarning()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.WARNING))
|
||||
{
|
||||
TypesToLog.Add(ELogType.WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogError()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.ERROR))
|
||||
{
|
||||
TypesToLog.Add(ELogType.ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogCritical()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.CRITICAL))
|
||||
{
|
||||
TypesToLog.Add(ELogType.CRITICAL);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogTraffic()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.TRAFFIC))
|
||||
{
|
||||
TypesToLog.Add(ELogType.TRAFFIC);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogTrace()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.TRACE))
|
||||
{
|
||||
TypesToLog.Add(ELogType.TRACE);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogDebug()
|
||||
{
|
||||
if (TypesToLog == null)
|
||||
{
|
||||
TypesToLog = new List<ELogType>();
|
||||
}
|
||||
|
||||
if (!TypesToLog.Contains(ELogType.DEBUG))
|
||||
{
|
||||
TypesToLog.Add(ELogType.DEBUG);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace EonaCat.Logger.Servers.GrayLog;
|
||||
@@ -21,10 +22,20 @@ public class Graylog : IDisposable
|
||||
|
||||
public Graylog() { }
|
||||
|
||||
public Graylog(string hostname = "127.0.0.1", int port = 12201, string nickName = null)
|
||||
/// <summary>
|
||||
/// Graylog server
|
||||
/// </summary>
|
||||
/// <param name="hostname"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="logType"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="ArgumentException"></exception>
|
||||
public Graylog(string hostname = "127.0.0.1", int port = 12201, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
_Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
|
||||
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
|
||||
TypesToLog = typesToLog;
|
||||
|
||||
Nickname = nickName ?? IpPort;
|
||||
SetUdp();
|
||||
@@ -56,17 +67,38 @@ public class Graylog : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
private void SetUdp()
|
||||
public List<ELogType> TypesToLog { get; set; }
|
||||
public bool IsConnected { get; set; }
|
||||
|
||||
internal void SetUdp()
|
||||
{
|
||||
DisposeUdp();
|
||||
Udp = new UdpClient(_Hostname, _Port);
|
||||
try
|
||||
{
|
||||
DisposeUdp();
|
||||
Udp = new UdpClient(_Hostname, _Port);
|
||||
IsConnected = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void DisposeUdp()
|
||||
internal void DisposeUdp()
|
||||
{
|
||||
if (Udp != null)
|
||||
{
|
||||
Udp.Dispose();
|
||||
IsConnected = false;
|
||||
|
||||
try
|
||||
{
|
||||
Udp?.Close();
|
||||
Udp.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
Udp = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using EonaCat.Json;
|
||||
using EonaCat.Json;
|
||||
|
||||
namespace EonaCat.Logger.Servers.Splunk;
|
||||
|
||||
@@ -14,6 +10,7 @@ using EonaCat.Logger.Servers.Splunk.Models;
|
||||
/// Splunk Server.
|
||||
/// </summary>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -33,13 +30,23 @@ public class Splunk : IDisposable
|
||||
public bool IsHttpsHecUrl => HasHecUrl && _splunkHecUrl.ToLower().StartsWith("https");
|
||||
public bool IsLocalHost => HasHecUrl && (_splunkHecUrl.ToLower().Contains("127.0.0.1") || _splunkHecUrl.ToLower().Contains("localhost"));
|
||||
|
||||
public Splunk(string splunkHecUrl, string splunkHecToken, HttpClientHandler httpClientHandler = null, string nickName = null)
|
||||
/// <summary>
|
||||
/// Splunk Server
|
||||
/// </summary>
|
||||
/// <param name="splunkHecUrl"></param>
|
||||
/// <param name="splunkHecToken"></param>
|
||||
/// <param name="httpClientHandler"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
public Splunk(string splunkHecUrl, string splunkHecToken, HttpClientHandler httpClientHandler = null, string nickName = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
SplunkHecUrl = splunkHecUrl ?? throw new ArgumentNullException(nameof(splunkHecUrl));
|
||||
SplunkHecToken = splunkHecToken ?? throw new ArgumentNullException(nameof(splunkHecToken));
|
||||
|
||||
Nickname = nickName ?? $"{splunkHecUrl}_{splunkHecToken}";
|
||||
SplunkClientHandler = httpClientHandler ?? new HttpClientHandler();
|
||||
TypesToLog = typesToLog;
|
||||
|
||||
CreateHttpClient();
|
||||
}
|
||||
@@ -59,6 +66,8 @@ public class Splunk : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
public List<ELogType> TypesToLog { get; set; }
|
||||
|
||||
private void CreateHttpClient()
|
||||
{
|
||||
DisposeHttpClient();
|
||||
@@ -84,7 +93,7 @@ public class Splunk : IDisposable
|
||||
CreateHttpClient();
|
||||
}
|
||||
|
||||
public async Task<HttpResponseMessage> SendAsync(SplunkPayload splunkPayload)
|
||||
public async Task<HttpResponseMessage> SendAsync(SplunkPayload splunkPayload, bool disableSplunkSSL = false)
|
||||
{
|
||||
if (splunkPayload == null) return null;
|
||||
|
||||
@@ -95,6 +104,16 @@ public class Splunk : IDisposable
|
||||
host = splunkPayload.Host
|
||||
};
|
||||
|
||||
if (disableSplunkSSL)
|
||||
{
|
||||
DisableSSLValidation();
|
||||
}
|
||||
|
||||
if (HttpClient == null)
|
||||
{
|
||||
CreateHttpClient();
|
||||
}
|
||||
|
||||
var eventJson = JsonHelper.ToJson(eventObject);
|
||||
if (!HasHecToken) CreateHttpClient();
|
||||
|
||||
@@ -102,7 +121,7 @@ public class Splunk : IDisposable
|
||||
return await HttpClient.PostAsync("/services/collector/event", content);
|
||||
}
|
||||
|
||||
private void DisposeHttpClient()
|
||||
internal void DisposeHttpClient()
|
||||
{
|
||||
if (HttpClient != null)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace EonaCat.Logger.Servers.Syslog;
|
||||
@@ -12,17 +13,29 @@ public class Syslog : IDisposable
|
||||
{
|
||||
private string _Hostname = "127.0.0.1";
|
||||
private int _Port = 514;
|
||||
private bool IsConnected { get; set; }
|
||||
public bool IsConnected { get; private set; }
|
||||
|
||||
internal UdpClient Udp;
|
||||
|
||||
public Syslog() { }
|
||||
|
||||
public Syslog(string hostname = "127.0.0.1", int port = 514, string nickName = null)
|
||||
/// <summary>
|
||||
/// Syslog server
|
||||
/// </summary>
|
||||
/// <param name="hostname"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickName"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <param name="convertToRfc5424"></param>
|
||||
/// <param name="convertToRfc3164"></param>
|
||||
public Syslog(string hostname = "127.0.0.1", int port = 514, string nickName = null, List<ELogType> typesToLog = null, bool convertToRfc5424 = false, bool convertToRfc3164 = false)
|
||||
{
|
||||
Hostname = hostname;
|
||||
Port = port;
|
||||
Nickname = nickName ?? IpPort;
|
||||
TypesToLog = typesToLog;
|
||||
ConvertToRfc5424 = convertToRfc5424;
|
||||
ConvertToRfc3164 = convertToRfc3164;
|
||||
}
|
||||
|
||||
public string Hostname
|
||||
@@ -54,8 +67,11 @@ public class Syslog : IDisposable
|
||||
public string IpPort => _Hostname + ":" + _Port;
|
||||
public bool SupportsTcp { get; set; }
|
||||
public string Nickname { get; set; }
|
||||
public List<ELogType> TypesToLog { get; set; }
|
||||
public bool ConvertToRfc5424 { get; set; }
|
||||
public bool ConvertToRfc3164 { get; set; }
|
||||
|
||||
private void SetUdp()
|
||||
internal void SetUdp()
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -69,12 +85,21 @@ public class Syslog : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
private void DisposeUdp()
|
||||
internal void DisposeUdp()
|
||||
{
|
||||
if (Udp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
Udp.Dispose();
|
||||
|
||||
try
|
||||
{
|
||||
Udp?.Close();
|
||||
Udp.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
Udp = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -12,16 +13,27 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
private int _Port = 514;
|
||||
internal TcpClient _tcp;
|
||||
|
||||
private bool IsConnected { get; set; }
|
||||
public bool IsConnected { get; private set; }
|
||||
public string Nickname { get; set; }
|
||||
public string IpPort => _Hostname + ":" + _Port;
|
||||
|
||||
public Tcp(string hostname, int port, string nickname = null)
|
||||
/// <summary>
|
||||
/// Tcp Server
|
||||
/// </summary>
|
||||
/// <param name="hostname"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickname"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="ArgumentException"></exception>
|
||||
public Tcp(string hostname, int port, string nickname = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
_Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
|
||||
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
|
||||
|
||||
Nickname = nickname ?? IpPort;
|
||||
TypesToLog = typesToLog;
|
||||
|
||||
SetTcp();
|
||||
}
|
||||
|
||||
@@ -51,6 +63,8 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
}
|
||||
}
|
||||
|
||||
public List<ELogType> TypesToLog { get; set; }
|
||||
|
||||
internal void SetTcp()
|
||||
{
|
||||
try
|
||||
@@ -70,9 +84,17 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
if (_tcp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
_tcp.Close();
|
||||
_tcp.Dispose();
|
||||
_tcp = null;
|
||||
|
||||
try
|
||||
{
|
||||
_tcp.Close();
|
||||
_tcp.Dispose();
|
||||
_tcp = null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -13,15 +14,24 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
private int _Port = 514;
|
||||
internal UdpClient _udp;
|
||||
|
||||
private bool IsConnected { get; set; }
|
||||
public bool IsConnected { get; private set; }
|
||||
public string Nickname { get; set; }
|
||||
public string IpPort => _Hostname + ":" + _Port;
|
||||
|
||||
public Udp(string hostname, int port, string nickname = null)
|
||||
/// <summary>
|
||||
/// Udp Server
|
||||
/// </summary>
|
||||
/// <param name="hostname"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="nickname"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="ArgumentException"></exception>
|
||||
public Udp(string hostname, int port, string nickname = null, List<ELogType> typesToLog = null)
|
||||
{
|
||||
_Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
|
||||
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
|
||||
|
||||
TypesToLog = typesToLog;
|
||||
Nickname = nickname ?? IpPort;
|
||||
SetUdp();
|
||||
}
|
||||
@@ -52,6 +62,8 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
}
|
||||
}
|
||||
|
||||
public List<ELogType> TypesToLog { get; set; }
|
||||
|
||||
internal void SetUdp()
|
||||
{
|
||||
try
|
||||
@@ -71,7 +83,16 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
if (_udp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
_udp.Dispose();
|
||||
|
||||
try
|
||||
{
|
||||
_udp?.Close();
|
||||
_udp.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
_udp = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,13 @@ namespace EonaCat.Logger.Servers.Zabbix.API;
|
||||
|
||||
public class ZabbixApi
|
||||
{
|
||||
/// <summary>
|
||||
/// Zabbix Api
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <param name="password"></param>
|
||||
/// <param name="zabbixURL"></param>
|
||||
/// <param name="basicAuth"></param>
|
||||
public ZabbixApi(string user, string password, string zabbixURL, bool basicAuth)
|
||||
{
|
||||
_user = user;
|
||||
|
||||
@@ -22,6 +22,12 @@ namespace EonaCat.Logger.Servers.Zabbix
|
||||
/// </summary>
|
||||
public ZabbixData[] Data { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Zabbix request
|
||||
/// </summary>
|
||||
/// <param name="host"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
public ZabbixRequest(string host, string key, string value)
|
||||
{
|
||||
Request = "sender data";
|
||||
|
||||
@@ -8,22 +8,29 @@ namespace EonaCat.Logger.Test.Web;
|
||||
public class Logger
|
||||
{
|
||||
private LogManager _logManager;
|
||||
public ELogType MaxLogType { get; set; }
|
||||
public List<ELogType> TypesToLog { get; set; } = new List<ELogType>();
|
||||
public LoggerSettings LoggerSettings { get; }
|
||||
public bool UseLocalTime { get; set; }
|
||||
public string LogFolder { get; set; } = Path.Combine(FileLoggerOptions.DefaultPath, "logs");
|
||||
public string CurrentLogFile => _logManager.CurrentLogFile;
|
||||
public bool IsDisabled { get; set; }
|
||||
|
||||
public Logger(string name = "EonaCatTestLogger", ELogType maxLogType = ELogType.INFO, bool useLocalTime = false, int maxFileSize = 20_000_000)
|
||||
/// <summary>
|
||||
/// Logger
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="typesToLog"></param>
|
||||
/// <param name="useLocalTime"></param>
|
||||
/// <param name="maxFileSize"></param>
|
||||
public Logger(string name = "EonaCatTestLogger", List<ELogType> typesToLog = null, bool useLocalTime = false, int maxFileSize = 20_000_000)
|
||||
{
|
||||
UseLocalTime = useLocalTime;
|
||||
MaxLogType = maxLogType;
|
||||
TypesToLog = typesToLog;
|
||||
|
||||
LoggerSettings = new LoggerSettings
|
||||
{
|
||||
Id = name,
|
||||
MaxLogType = MaxLogType,
|
||||
TypesToLog = TypesToLog,
|
||||
UseLocalTime = UseLocalTime,
|
||||
FileLoggerOptions =
|
||||
{
|
||||
@@ -129,7 +136,7 @@ public class Logger
|
||||
return;
|
||||
}
|
||||
|
||||
if (ELogType.ERROR <= MaxLogType)
|
||||
if (TypesToLog.Contains(ELogType.ERROR))
|
||||
{
|
||||
await _logManager.WriteAsync(exception, message, writeToConsole: writeToConsole).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,13 @@ var defaultColor = Console.ForegroundColor;
|
||||
// Add services to the container.
|
||||
Logger logger = new Logger();
|
||||
logger.UseLocalTime = true;
|
||||
logger.MaxLogType = ELogType.TRACE;
|
||||
logger.TypesToLog.Add(ELogType.INFO);
|
||||
logger.TypesToLog.Add(ELogType.WARNING);
|
||||
logger.TypesToLog.Add(ELogType.ERROR);
|
||||
logger.TypesToLog.Add(ELogType.CRITICAL);
|
||||
logger.TypesToLog.Add(ELogType.DEBUG);
|
||||
logger.TypesToLog.Add(ELogType.TRACE);
|
||||
logger.TypesToLog.Add(ELogType.TRAFFIC);
|
||||
logger.LoggerSettings.OnLog += LoggerSettings_OnLog;
|
||||
logger.LoggerSettings.UseMask = true;
|
||||
|
||||
@@ -119,7 +125,7 @@ void RunLoggingExceptionTests()
|
||||
var loggerSettings = new LoggerSettings();
|
||||
loggerSettings.FileLoggerOptions.UseLocalTime = true;
|
||||
loggerSettings.UseLocalTime = true;
|
||||
loggerSettings.MaxLogType = ELogType.INFO;
|
||||
loggerSettings.TypesToLog.Add(ELogType.INFO);
|
||||
var logger = new LogManager(loggerSettings);
|
||||
|
||||
for (var i = 0; i < 10; i++)
|
||||
@@ -215,7 +221,18 @@ async Task RunLoggingTestsAsync()
|
||||
var loggerSettings = new LoggerSettings();
|
||||
loggerSettings.UseLocalTime = true;
|
||||
loggerSettings.FileLoggerOptions.UseLocalTime = true;
|
||||
loggerSettings.MaxLogType = ELogType.DEBUG;
|
||||
loggerSettings.TypesToLog.Add(ELogType.INFO);
|
||||
loggerSettings.TypesToLog.Add(ELogType.WARNING);
|
||||
loggerSettings.TypesToLog.Add(ELogType.ERROR);
|
||||
loggerSettings.TypesToLog.Add(ELogType.TRAFFIC);
|
||||
loggerSettings.TypesToLog.Add(ELogType.DEBUG);
|
||||
loggerSettings.LogDebug();
|
||||
loggerSettings.LogInfo();
|
||||
loggerSettings.LogWarning();
|
||||
loggerSettings.LogError();
|
||||
loggerSettings.LogCritical();
|
||||
loggerSettings.LogTrace();
|
||||
loggerSettings.LogTraffic();
|
||||
loggerSettings.FileLoggerOptions.FileSizeLimit = 1024 * 1024 * 1;
|
||||
loggerSettings.FileLoggerOptions.FileNamePrefix = "AllTypes";
|
||||
loggerSettings.FileLoggerOptions.MaxRolloverFiles = 5;
|
||||
|
||||
Reference in New Issue
Block a user