This commit is contained in:
2025-02-16 13:30:54 +01:00
parent 0991422672
commit 99b3417186
15 changed files with 541 additions and 99 deletions

View File

@@ -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> /// <summary>
/// Message severity. /// Message severity.
/// </summary> /// </summary>

View File

@@ -3,7 +3,7 @@
<TargetFrameworks>.netstandard2.1; net6.0; net7.0; net8.0; net4.8;</TargetFrameworks> <TargetFrameworks>.netstandard2.1; net6.0; net7.0; net8.0; net4.8;</TargetFrameworks>
<ApplicationIcon>icon.ico</ApplicationIcon> <ApplicationIcon>icon.ico</ApplicationIcon>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<FileVersion>1.3.8</FileVersion> <FileVersion>1.3.9</FileVersion>
<Authors>EonaCat (Jeroen Saey)</Authors> <Authors>EonaCat (Jeroen Saey)</Authors>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Company>EonaCat (Jeroen Saey)</Company> <Company>EonaCat (Jeroen Saey)</Company>
@@ -24,7 +24,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<EVRevisionFormat>1.3.8+{chash:10}.{c:ymd}</EVRevisionFormat> <EVRevisionFormat>1.3.9+{chash:10}.{c:ymd}</EVRevisionFormat>
<EVDefault>true</EVDefault> <EVDefault>true</EVDefault>
<EVInfo>true</EVInfo> <EVInfo>true</EVInfo>
<EVTagMatch>v[0-9]*</EVTagMatch> <EVTagMatch>v[0-9]*</EVTagMatch>

View File

@@ -9,9 +9,9 @@ public interface ILogManager
{ {
Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null, Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null,
string customSplunkSourceType = null, string grayLogFacility = null, string grayLogSource = 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, Task WriteAsync(Exception exception, string module = null, string method = null, bool criticalException = false,
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null, 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);
} }

View File

@@ -30,6 +30,44 @@ internal static class LogHelper
private static readonly string MachineName = Environment.MachineName; private static readonly string MachineName = Environment.MachineName;
private static readonly string HostName = Dns.GetHostName(); 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, internal static string FormatMessageWithHeader(LoggerSettings settings, ELogType logType, string currentMessage,
DateTime dateTime, string category = null) DateTime dateTime, string category = null)
{ {
@@ -62,9 +100,12 @@ internal static class LogHelper
return sb.ToString(); 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) if (settings.EnableColors && settings.Colors != null)
{ {
@@ -121,6 +162,7 @@ internal static class LogHelper
Log(logger, logType.ToLogLevel(), message); Log(logger, logType.ToLogLevel(), message);
} }
} }
private static bool IsLogLevelEnabled(LoggerSettings loggerSettings, ELogType logType) private static bool IsLogLevelEnabled(LoggerSettings loggerSettings, ELogType logType)
{ {
if (loggerSettings == null) if (loggerSettings == null)
@@ -129,18 +171,50 @@ internal static class LogHelper
return false; return false;
} }
var isEnabled = loggerSettings.MaxLogType != ELogType.NONE && logType <= loggerSettings.MaxLogType; var isEnabled = loggerSettings.TypesToLog == null || loggerSettings.TypesToLog.Count == 0 || loggerSettings.TypesToLog.Contains(logType);
if (!isEnabled) if (logType == ELogType.NONE || !isEnabled)
{ {
OnLogLevelDisabled?.Invoke(null, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled." }); OnLogLevelDisabled?.Invoke(null, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled." });
return false;
}
return true;
} }
return isEnabled; public static void AddLogLevel(LoggerSettings settings, ELogType logType)
}
public static void SetLogLevel(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) private static void Log(ILogger logger, LogLevel logLevel, string message)
@@ -148,7 +222,12 @@ internal static class LogHelper
logger.Log(logLevel, message); 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) if (settings == null || splunkPayload == null)
{ {
@@ -166,7 +245,18 @@ internal static class LogHelper
{ {
try 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) if (!response.IsSuccessStatusCode)
{ {
LogError($"Failed to send log to Splunk '{splunkServer.SplunkHecUrl}'. Status code: {response.StatusCode}"); LogError($"Failed to send log to Splunk '{splunkServer.SplunkHecUrl}'. Status code: {response.StatusCode}");
@@ -184,7 +274,7 @@ internal static class LogHelper
/// <summary> /// <summary>
/// Overload for sending a simple log message to Splunk. /// Overload for sending a simple log message to Splunk.
/// </summary> /// </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)) if (settings == null || string.IsNullOrWhiteSpace(message))
{ {
@@ -200,10 +290,10 @@ internal static class LogHelper
{ {
Host = Environment.MachineName, Host = Environment.MachineName,
EventData = message, EventData = message,
SourceType = logType SourceType = logType,
}; };
await SendToSplunkServersAsync(settings, splunkPayload); await SendToSplunkServersAsync(settings, splunkPayload, logType, disableSplunkSSL);
} }
/// <summary> /// <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") string facility, string source, string version = "1.1")
{ {
if (settings == null || string.IsNullOrWhiteSpace(message)) if (settings == null || string.IsNullOrWhiteSpace(message))
@@ -235,7 +325,7 @@ internal static class LogHelper
version, version,
host = MachineName, host = MachineName,
short_message = message, short_message = message,
level = logLevel.ToGrayLogLevel(), level = logType.ToGrayLogLevel(),
facility, facility,
source, source,
timestamp = DateTime.UtcNow.ToUnixTimestamp() timestamp = DateTime.UtcNow.ToUnixTimestamp()
@@ -249,6 +339,18 @@ internal static class LogHelper
{ {
try 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) if (messageBytes.Length <= MaxUdpPacketSize)
{ {
// Send via UDP (single packet) // 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)) if (settings == null || string.IsNullOrWhiteSpace(message))
{ {
@@ -322,6 +424,27 @@ internal static class LogHelper
{ {
try 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); var data = Encoding.UTF8.GetBytes(message);
if (data.Length <= MaxUdpPacketSize) if (data.Length <= MaxUdpPacketSize)
@@ -353,7 +476,7 @@ internal static class LogHelper
await Task.WhenAll(tasks); 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)) if (settings == null || string.IsNullOrWhiteSpace(message))
{ {
@@ -371,9 +494,19 @@ internal static class LogHelper
{ {
try try
{ {
var data = Encoding.UTF8.GetBytes(message); var isEnabled = server.TypesToLog == null || server.TypesToLog.Count == 0 || server.TypesToLog.Contains(logType);
server.DisposeTcp(); if (logType == ELogType.NONE || !isEnabled)
{
server?.DisposeTcp();
return;
}
if (!server.IsConnected)
{
server.SetTcp(); server.SetTcp();
}
var data = Encoding.UTF8.GetBytes(message);
await server.WriteAsync(data).ConfigureAwait(false); await server.WriteAsync(data).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)
@@ -389,7 +522,7 @@ internal static class LogHelper
await Task.WhenAll(tasks); 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)) if (settings == null || string.IsNullOrWhiteSpace(message))
{ {
@@ -407,9 +540,19 @@ internal static class LogHelper
{ {
try try
{ {
var data = Encoding.UTF8.GetBytes(message); var isEnabled = server.TypesToLog == null || server.TypesToLog.Count == 0 || server.TypesToLog.Contains(logType);
server.DisposeUdp(); if (logType == ELogType.NONE || !isEnabled)
{
server?.DisposeUdp();
return;
}
if (!server.IsConnected)
{
server.SetUdp(); server.SetUdp();
}
var data = Encoding.UTF8.GetBytes(message);
await server.WriteAsync(data).ConfigureAwait(false); await server.WriteAsync(data).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)

View File

@@ -79,7 +79,7 @@ namespace EonaCat.Logger.Managers
public async Task WriteAsync(Exception exception, string module = null, string method = null, public async Task WriteAsync(Exception exception, string module = null, string method = null,
bool criticalException = false, bool criticalException = false,
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null, 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) if (exception == null)
{ {
@@ -89,13 +89,13 @@ namespace EonaCat.Logger.Managers
await WriteAsync(exception.FormatExceptionToMessage(module, method), await WriteAsync(exception.FormatExceptionToMessage(module, method),
criticalException ? ELogType.CRITICAL : ELogType.ERROR, writeToConsole, criticalException ? ELogType.CRITICAL : ELogType.ERROR, writeToConsole,
customSplunkSourceType, grayLogFacility, grayLogSource, customSplunkSourceType, grayLogFacility, grayLogSource,
grayLogVersion); grayLogVersion, disableSplunkSSL = false);
} }
public async Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null, public async Task WriteAsync(string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null,
string customSplunkSourceType = null, string customSplunkSourceType = null,
string grayLogFacility = null, string grayLogSource = null, string grayLogFacility = null, string grayLogSource = null,
string grayLogVersion = "1.1") string grayLogVersion = "1.1", bool disableSplunkSSL = false)
{ {
if (logType == ELogType.NONE) if (logType == ELogType.NONE)
{ {
@@ -103,7 +103,7 @@ namespace EonaCat.Logger.Managers
} }
await InternalWriteAsync(CurrentDateTime, message, logType, writeToConsole, await InternalWriteAsync(CurrentDateTime, message, logType, writeToConsole,
customSplunkSourceType, grayLogFacility, grayLogSource, grayLogVersion); customSplunkSourceType, grayLogFacility, grayLogSource, grayLogVersion, disableSplunkSSL);
} }
/// <summary> /// <summary>
@@ -121,7 +121,6 @@ namespace EonaCat.Logger.Managers
var settings = new LoggerSettings var settings = new LoggerSettings
{ {
Id = "EonaCatLogger", Id = "EonaCatLogger",
MaxLogType = ELogType.INFO
}; };
return settings; return settings;
} }
@@ -164,7 +163,7 @@ namespace EonaCat.Logger.Managers
LoggerFactory?.Dispose(); LoggerFactory?.Dispose();
IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.MaxLogType.ToLogLevel()) serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.TypesToLog.Min().ToLogLevel())
.AddEonaCatFileLogger(configuration => .AddEonaCatFileLogger(configuration =>
{ {
var fileLoggerOptions = Settings.FileLoggerOptions; var fileLoggerOptions = Settings.FileLoggerOptions;
@@ -193,7 +192,7 @@ namespace EonaCat.Logger.Managers
private async Task InternalWriteAsync(DateTime dateTime, string message, ELogType logType = ELogType.INFO, private async Task InternalWriteAsync(DateTime dateTime, string message, ELogType logType = ELogType.INFO,
bool? writeToConsole = null, string customSplunkSourceType = null, string grayLogFacility = null, 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) if (string.IsNullOrWhiteSpace(message) || logType == ELogType.NONE || !IsLogLevelEnabled(logType) || _isDisposing)
{ {
@@ -212,16 +211,16 @@ namespace EonaCat.Logger.Managers
if (writeToConsoleValue) if (writeToConsoleValue)
{ {
LogHelper.SendToConsole(Settings, logType, messageWithHeader, true); LogHelper.SendToConsole(Settings, logType, messageWithHeader);
} }
var tasks = new List<Task>(5) var tasks = new List<Task>(5)
{ {
LogHelper.SendToSysLogServersAsync(Settings, messageWithHeader), LogHelper.SendToSysLogServersAsync(Settings, message, logType, dateTime, _category),
LogHelper.SendToSplunkServersAsync(Settings, customSplunkSourceType ?? logType.ToString(), messageWithHeader), LogHelper.SendToSplunkServersAsync(Settings, customSplunkSourceType ?? logType.ToString(), messageWithHeader, disableSplunkSSL),
LogHelper.SendToGrayLogServersAsync(Settings, messageWithHeader, logType, grayLogFacility, grayLogSource, grayLogVersion), LogHelper.SendToGrayLogServersAsync(Settings, messageWithHeader, logType, grayLogFacility, grayLogSource, grayLogVersion),
LogHelper.SendToTcpLogServersAsync(Settings, messageWithHeader), LogHelper.SendToTcpLogServersAsync(Settings, messageWithHeader, logType),
LogHelper.SendToUdpLogServersAsync(Settings, messageWithHeader), LogHelper.SendToUdpLogServersAsync(Settings, messageWithHeader, logType),
}; };
if (tasks.Count > 0) if (tasks.Count > 0)
@@ -247,12 +246,13 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
var isEnabled = Settings.MaxLogType != ELogType.NONE && logType <= Settings.MaxLogType; var isEnabled = Settings.TypesToLog == null || Settings.TypesToLog.Count == 0 || Settings.TypesToLog.Contains(logType);
if (!isEnabled) if (logType == ELogType.NONE || !isEnabled)
{ {
OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled, cannot log message" }); OnLogLevelDisabled?.Invoke(this, new ErrorMessage { Message = $"Logtype '{logType}' is not enabled, cannot log message" });
return false;
} }
return isEnabled; return true;
} }
public void Reset() public void Reset()
@@ -321,13 +321,16 @@ namespace EonaCat.Logger.Managers
} }
/// <summary> /// <summary>
/// Add sysLog server /// Add Syslog server
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="nickName"></param> /// <param name="nickName"></param>
/// <param name="typesToLog"></param>
/// <param name="convertToRfc5424"></param>
/// <param name="convertToRfc3164"></param>
/// <returns></returns> /// <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) if (Settings.SysLogServers == null)
{ {
@@ -339,7 +342,7 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
Settings.SysLogServers.Add(new Syslog(address, port)); Settings.SysLogServers.Add(new Syslog(address, port, nickName, typesToLog, convertToRfc5424, convertToRfc3164));
return true; return true;
} }
@@ -389,10 +392,11 @@ namespace EonaCat.Logger.Managers
/// </summary> /// </summary>
/// <param name="splunkHecUrl"></param> /// <param name="splunkHecUrl"></param>
/// <param name="splunkHecToken"></param> /// <param name="splunkHecToken"></param>
/// <param name="httpClientHandler">(optional)</param> /// <param name="httpClientHandler"></param>
/// <param name="nickName">(optional)</param> /// <param name="nickName"></param>
/// <param name="typesToLog"></param>
/// <returns></returns> /// <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) if (Settings.SplunkServers == null)
{ {
@@ -404,7 +408,7 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
Settings.SplunkServers.Add(new Splunk(splunkHecUrl, splunkHecToken, httpClientHandler, nickName)); Settings.SplunkServers.Add(new Splunk(splunkHecUrl, splunkHecToken, httpClientHandler, nickName, typesToLog));
return true; return true;
} }
@@ -450,13 +454,14 @@ namespace EonaCat.Logger.Managers
} }
/// <summary> /// <summary>
/// Add GrayLog server /// Add Graylog server
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="nickName"></param> /// <param name="nickName"></param>
/// <param name="typesToLog"></param>
/// <returns></returns> /// <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) if (Settings.GrayLogServers == null)
{ {
@@ -468,7 +473,7 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
Settings.GrayLogServers.Add(new Graylog(address, port)); Settings.GrayLogServers.Add(new Graylog(address, port, nickName, typesToLog));
return true; return true;
} }
@@ -514,13 +519,14 @@ namespace EonaCat.Logger.Managers
} }
/// <summary> /// <summary>
/// Add Tcp server /// Add Tcp Server
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="nickName"></param> /// <param name="nickName"></param>
/// <param name="typesToLog"></param>
/// <returns></returns> /// <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) if (Settings.TcpServers == null)
{ {
@@ -532,7 +538,7 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
Settings.TcpServers.Add(new Tcp(address, port)); Settings.TcpServers.Add(new Tcp(address, port, nickName, typesToLog));
return true; return true;
} }
@@ -578,13 +584,14 @@ namespace EonaCat.Logger.Managers
} }
/// <summary> /// <summary>
/// Add Udp server /// Add Udp Server
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="nickName"></param> /// <param name="nickName"></param>
/// <param name="typesToLog"></param>
/// <returns></returns> /// <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) if (Settings.UdpServers == null)
{ {
@@ -596,7 +603,7 @@ namespace EonaCat.Logger.Managers
return false; return false;
} }
Settings.UdpServers.Add(new Udp(address, port)); Settings.UdpServers.Add(new Udp(address, port, nickName, typesToLog));
return true; return true;
} }

View File

@@ -23,7 +23,6 @@ public class LoggerSettings
private FileLoggerOptions _fileLoggerOptions; private FileLoggerOptions _fileLoggerOptions;
private string _headerFormat = "{ts} {host} {category} {thread} {sev}"; private string _headerFormat = "{ts} {host} {category} {thread} {sev}";
private int _maxMessageLength = 1024;
private string _timestampFormat = "yyyy-MM-dd HH:mm:ss"; private string _timestampFormat = "yyyy-MM-dd HH:mm:ss";
/// <summary> /// <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<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<Graylog> GrayLogServers { get; internal set; }
public List<Servers.Tcp.Tcp> TcpServers { get; internal set; } public List<Servers.Tcp.Tcp> TcpServers { get; internal set; }
@@ -232,4 +244,100 @@ public class LoggerSettings
{ {
OnLog = null; 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);
}
}
} }

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Net.Sockets; using System.Net.Sockets;
namespace EonaCat.Logger.Servers.GrayLog; namespace EonaCat.Logger.Servers.GrayLog;
@@ -21,10 +22,20 @@ public class Graylog : IDisposable
public Graylog() { } 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)); _Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater."); _Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
TypesToLog = typesToLog;
Nickname = nickName ?? IpPort; Nickname = nickName ?? IpPort;
SetUdp(); 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()
{
try
{ {
DisposeUdp(); DisposeUdp();
Udp = new UdpClient(_Hostname, _Port); Udp = new UdpClient(_Hostname, _Port);
IsConnected = true;
}
catch
{
IsConnected = false;
}
} }
private void DisposeUdp() internal void DisposeUdp()
{ {
if (Udp != null) if (Udp != null)
{ {
IsConnected = false;
try
{
Udp?.Close();
Udp.Dispose(); Udp.Dispose();
}
catch
{
// Do nothing
}
Udp = null; Udp = null;
} }
} }

View File

@@ -1,8 +1,4 @@
using System; using EonaCat.Json;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using EonaCat.Json;
namespace EonaCat.Logger.Servers.Splunk; namespace EonaCat.Logger.Servers.Splunk;
@@ -14,6 +10,7 @@ using EonaCat.Logger.Servers.Splunk.Models;
/// Splunk Server. /// Splunk Server.
/// </summary> /// </summary>
using System; using System;
using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -33,13 +30,23 @@ public class Splunk : IDisposable
public bool IsHttpsHecUrl => HasHecUrl && _splunkHecUrl.ToLower().StartsWith("https"); public bool IsHttpsHecUrl => HasHecUrl && _splunkHecUrl.ToLower().StartsWith("https");
public bool IsLocalHost => HasHecUrl && (_splunkHecUrl.ToLower().Contains("127.0.0.1") || _splunkHecUrl.ToLower().Contains("localhost")); 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)); SplunkHecUrl = splunkHecUrl ?? throw new ArgumentNullException(nameof(splunkHecUrl));
SplunkHecToken = splunkHecToken ?? throw new ArgumentNullException(nameof(splunkHecToken)); SplunkHecToken = splunkHecToken ?? throw new ArgumentNullException(nameof(splunkHecToken));
Nickname = nickName ?? $"{splunkHecUrl}_{splunkHecToken}"; Nickname = nickName ?? $"{splunkHecUrl}_{splunkHecToken}";
SplunkClientHandler = httpClientHandler ?? new HttpClientHandler(); SplunkClientHandler = httpClientHandler ?? new HttpClientHandler();
TypesToLog = typesToLog;
CreateHttpClient(); CreateHttpClient();
} }
@@ -59,6 +66,8 @@ public class Splunk : IDisposable
} }
} }
public List<ELogType> TypesToLog { get; set; }
private void CreateHttpClient() private void CreateHttpClient()
{ {
DisposeHttpClient(); DisposeHttpClient();
@@ -84,7 +93,7 @@ public class Splunk : IDisposable
CreateHttpClient(); CreateHttpClient();
} }
public async Task<HttpResponseMessage> SendAsync(SplunkPayload splunkPayload) public async Task<HttpResponseMessage> SendAsync(SplunkPayload splunkPayload, bool disableSplunkSSL = false)
{ {
if (splunkPayload == null) return null; if (splunkPayload == null) return null;
@@ -95,6 +104,16 @@ public class Splunk : IDisposable
host = splunkPayload.Host host = splunkPayload.Host
}; };
if (disableSplunkSSL)
{
DisableSSLValidation();
}
if (HttpClient == null)
{
CreateHttpClient();
}
var eventJson = JsonHelper.ToJson(eventObject); var eventJson = JsonHelper.ToJson(eventObject);
if (!HasHecToken) CreateHttpClient(); if (!HasHecToken) CreateHttpClient();
@@ -102,7 +121,7 @@ public class Splunk : IDisposable
return await HttpClient.PostAsync("/services/collector/event", content); return await HttpClient.PostAsync("/services/collector/event", content);
} }
private void DisposeHttpClient() internal void DisposeHttpClient()
{ {
if (HttpClient != null) if (HttpClient != null)
{ {

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Net.Sockets; using System.Net.Sockets;
namespace EonaCat.Logger.Servers.Syslog; namespace EonaCat.Logger.Servers.Syslog;
@@ -12,17 +13,29 @@ public class Syslog : IDisposable
{ {
private string _Hostname = "127.0.0.1"; private string _Hostname = "127.0.0.1";
private int _Port = 514; private int _Port = 514;
private bool IsConnected { get; set; } public bool IsConnected { get; private set; }
internal UdpClient Udp; internal UdpClient Udp;
public Syslog() { } 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; Hostname = hostname;
Port = port; Port = port;
Nickname = nickName ?? IpPort; Nickname = nickName ?? IpPort;
TypesToLog = typesToLog;
ConvertToRfc5424 = convertToRfc5424;
ConvertToRfc3164 = convertToRfc3164;
} }
public string Hostname public string Hostname
@@ -54,8 +67,11 @@ public class Syslog : IDisposable
public string IpPort => _Hostname + ":" + _Port; public string IpPort => _Hostname + ":" + _Port;
public bool SupportsTcp { get; set; } public bool SupportsTcp { get; set; }
public string Nickname { 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 try
{ {
@@ -69,12 +85,21 @@ public class Syslog : IDisposable
} }
} }
private void DisposeUdp() internal void DisposeUdp()
{ {
if (Udp != null) if (Udp != null)
{ {
IsConnected = false; IsConnected = false;
try
{
Udp?.Close();
Udp.Dispose(); Udp.Dispose();
}
catch
{
// Do nothing
}
Udp = null; Udp = null;
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -12,16 +13,27 @@ namespace EonaCat.Logger.Servers.Tcp
private int _Port = 514; private int _Port = 514;
internal TcpClient _tcp; internal TcpClient _tcp;
private bool IsConnected { get; set; } public bool IsConnected { get; private set; }
public string Nickname { get; set; } public string Nickname { get; set; }
public string IpPort => _Hostname + ":" + _Port; 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)); _Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater."); _Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
Nickname = nickname ?? IpPort; Nickname = nickname ?? IpPort;
TypesToLog = typesToLog;
SetTcp(); SetTcp();
} }
@@ -51,6 +63,8 @@ namespace EonaCat.Logger.Servers.Tcp
} }
} }
public List<ELogType> TypesToLog { get; set; }
internal void SetTcp() internal void SetTcp()
{ {
try try
@@ -70,10 +84,18 @@ namespace EonaCat.Logger.Servers.Tcp
if (_tcp != null) if (_tcp != null)
{ {
IsConnected = false; IsConnected = false;
try
{
_tcp.Close(); _tcp.Close();
_tcp.Dispose(); _tcp.Dispose();
_tcp = null; _tcp = null;
} }
catch
{
// Do nothing
}
}
} }
public void Dispose() public void Dispose()

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -13,15 +14,24 @@ namespace EonaCat.Logger.Servers.Udp
private int _Port = 514; private int _Port = 514;
internal UdpClient _udp; internal UdpClient _udp;
private bool IsConnected { get; set; } public bool IsConnected { get; private set; }
public string Nickname { get; set; } public string Nickname { get; set; }
public string IpPort => _Hostname + ":" + _Port; 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)); _Hostname = hostname ?? throw new ArgumentNullException(nameof(hostname));
_Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater."); _Port = port >= 0 ? port : throw new ArgumentException("Port must be zero or greater.");
TypesToLog = typesToLog;
Nickname = nickname ?? IpPort; Nickname = nickname ?? IpPort;
SetUdp(); SetUdp();
} }
@@ -52,6 +62,8 @@ namespace EonaCat.Logger.Servers.Udp
} }
} }
public List<ELogType> TypesToLog { get; set; }
internal void SetUdp() internal void SetUdp()
{ {
try try
@@ -71,7 +83,16 @@ namespace EonaCat.Logger.Servers.Udp
if (_udp != null) if (_udp != null)
{ {
IsConnected = false; IsConnected = false;
try
{
_udp?.Close();
_udp.Dispose(); _udp.Dispose();
}
catch
{
// Do nothing
}
_udp = null; _udp = null;
} }
} }

View File

@@ -11,6 +11,13 @@ namespace EonaCat.Logger.Servers.Zabbix.API;
public class ZabbixApi 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) public ZabbixApi(string user, string password, string zabbixURL, bool basicAuth)
{ {
_user = user; _user = user;

View File

@@ -22,6 +22,12 @@ namespace EonaCat.Logger.Servers.Zabbix
/// </summary> /// </summary>
public ZabbixData[] Data { get; set; } 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) public ZabbixRequest(string host, string key, string value)
{ {
Request = "sender data"; Request = "sender data";

View File

@@ -8,22 +8,29 @@ namespace EonaCat.Logger.Test.Web;
public class Logger public class Logger
{ {
private LogManager _logManager; private LogManager _logManager;
public ELogType MaxLogType { get; set; } public List<ELogType> TypesToLog { get; set; } = new List<ELogType>();
public LoggerSettings LoggerSettings { get; } public LoggerSettings LoggerSettings { get; }
public bool UseLocalTime { get; set; } public bool UseLocalTime { get; set; }
public string LogFolder { get; set; } = Path.Combine(FileLoggerOptions.DefaultPath, "logs"); public string LogFolder { get; set; } = Path.Combine(FileLoggerOptions.DefaultPath, "logs");
public string CurrentLogFile => _logManager.CurrentLogFile; public string CurrentLogFile => _logManager.CurrentLogFile;
public bool IsDisabled { get; set; } 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; UseLocalTime = useLocalTime;
MaxLogType = maxLogType; TypesToLog = typesToLog;
LoggerSettings = new LoggerSettings LoggerSettings = new LoggerSettings
{ {
Id = name, Id = name,
MaxLogType = MaxLogType, TypesToLog = TypesToLog,
UseLocalTime = UseLocalTime, UseLocalTime = UseLocalTime,
FileLoggerOptions = FileLoggerOptions =
{ {
@@ -129,7 +136,7 @@ public class Logger
return; return;
} }
if (ELogType.ERROR <= MaxLogType) if (TypesToLog.Contains(ELogType.ERROR))
{ {
await _logManager.WriteAsync(exception, message, writeToConsole: writeToConsole).ConfigureAwait(false); await _logManager.WriteAsync(exception, message, writeToConsole: writeToConsole).ConfigureAwait(false);
} }

View File

@@ -18,7 +18,13 @@ var defaultColor = Console.ForegroundColor;
// Add services to the container. // Add services to the container.
Logger logger = new Logger(); Logger logger = new Logger();
logger.UseLocalTime = true; 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.OnLog += LoggerSettings_OnLog;
logger.LoggerSettings.UseMask = true; logger.LoggerSettings.UseMask = true;
@@ -119,7 +125,7 @@ void RunLoggingExceptionTests()
var loggerSettings = new LoggerSettings(); var loggerSettings = new LoggerSettings();
loggerSettings.FileLoggerOptions.UseLocalTime = true; loggerSettings.FileLoggerOptions.UseLocalTime = true;
loggerSettings.UseLocalTime = true; loggerSettings.UseLocalTime = true;
loggerSettings.MaxLogType = ELogType.INFO; loggerSettings.TypesToLog.Add(ELogType.INFO);
var logger = new LogManager(loggerSettings); var logger = new LogManager(loggerSettings);
for (var i = 0; i < 10; i++) for (var i = 0; i < 10; i++)
@@ -215,7 +221,18 @@ async Task RunLoggingTestsAsync()
var loggerSettings = new LoggerSettings(); var loggerSettings = new LoggerSettings();
loggerSettings.UseLocalTime = true; loggerSettings.UseLocalTime = true;
loggerSettings.FileLoggerOptions.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.FileSizeLimit = 1024 * 1024 * 1;
loggerSettings.FileLoggerOptions.FileNamePrefix = "AllTypes"; loggerSettings.FileLoggerOptions.FileNamePrefix = "AllTypes";
loggerSettings.FileLoggerOptions.MaxRolloverFiles = 5; loggerSettings.FileLoggerOptions.MaxRolloverFiles = 5;