102 lines
No EOL
3.6 KiB
C#
102 lines
No EOL
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using JD.Collections.Extensions;
|
|
using JD.Kernel.Structs;
|
|
using JetBrains.Annotations;
|
|
|
|
namespace JD.LogService
|
|
{
|
|
public static class LoggerExtensions
|
|
{
|
|
[StringFormatMethod("message")]
|
|
public static void LogError(this ILogger logger, string message, params object[] args)
|
|
{
|
|
logger.LogError(FileLocation.Empty, message, args);
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogError(this ILogger logger, FileLocation origin, string message, params object[] args)
|
|
{
|
|
logger.LogError(LogCategory.Error, origin, message, args);
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogWarning(this ILogger logger, string message, params object[] args)
|
|
{
|
|
logger.LogWarning(FileLocation.Empty, message, args);
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogWarning(this ILogger logger, FileLocation origin, string message, params object[] args)
|
|
{
|
|
logger.LogError(LogCategory.Warning, origin, message, args);
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
private static void LogError(this ILogger logger, LogCategory category, FileLocation origin, string message, params object[] args)
|
|
{
|
|
logger.Log(new Error(category, message, args) { Origin = origin });
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogMessage(this ILogger logger, string message, params object[] args)
|
|
{
|
|
logger.Log(new Message(message, args));
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogMessage(this ILogger logger, FileLocation origin, string message, params object[] args)
|
|
{
|
|
logger.Log(new Message(message, args) { Origin = origin });
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogMessage(this ILogger logger, FileLocation origin, MessageImportance importance, string message, params object[] args)
|
|
{
|
|
logger.Log(new Message(message, args)
|
|
{
|
|
Origin = origin,
|
|
Importance = importance
|
|
});
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogMessage(this ILogger logger, MessageImportance importance, string message, params object[] args)
|
|
{
|
|
logger.Log(new Message(message, args) { Importance = importance });
|
|
}
|
|
|
|
[StringFormatMethod("message")]
|
|
public static void LogException(this ILogger logger, Exception ex, string message, params object[] args)
|
|
{
|
|
logger.Log(Error.FromException(ex, message, args));
|
|
|
|
var allExceptions = new List<Exception>();
|
|
while (ex != null)
|
|
{
|
|
allExceptions.Add(ex);
|
|
ex = ex.InnerException;
|
|
}
|
|
|
|
var fullDetails = allExceptions.Join($"{Environment.NewLine}->", e => $"{e.Message} {e.StackTrace}");
|
|
logger.LogMessage(MessageImportance.Debug, fullDetails);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns a logger that prefills the file location with the provided one
|
|
/// if the logged error does not provide one.
|
|
/// </summary>
|
|
public static ILogger OfFileLocation(this ILogger logger, FileLocation fileLocation)
|
|
{
|
|
return Logger.FromAction(logEvent =>
|
|
{
|
|
if (Equals(logEvent.Origin, FileLocation.Empty))
|
|
{
|
|
logEvent.Origin = fileLocation;
|
|
}
|
|
|
|
logger.Log(logEvent);
|
|
});
|
|
}
|
|
}
|
|
} |