AmagnoVirtualPrinter/Common/VirtualPrinter.Logging/VirtualPrinterLogger.cs
2020-10-19 17:44:50 +02:00

103 lines
No EOL
2.6 KiB
C#

using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.IO;
using JetBrains.Annotations;
using NLog;
namespace VirtualPrinter.Logging
{
public class VirtualPrinterLogger<T> : VirtualPrinterLogger, IVirtualPrinterLogger<T>
{
public VirtualPrinterLogger() : base(ReadableTypeName.Generate(typeof(T)))
{
}
}
public static class ReadableTypeName
{
[NotNull]
public static string Generate([NotNull]Type type)
{
if (type == null)
{
throw new ArgumentNullException(nameof(type));
}
var provider = CodeDomProvider.CreateProvider("C#");
var typeReferenceExpression = new CodeTypeReferenceExpression(type);
using (var writer = new StringWriter())
{
provider.GenerateCodeFromExpression(typeReferenceExpression, writer, new CodeGeneratorOptions());
return writer.GetStringBuilder().ToString();
}
}
}
public class VirtualPrinterLogger : IVirtualPrinterLogger
{
private readonly ILogger _logger;
public VirtualPrinterLogger([NotNull]string loggerName)
{
if (string.IsNullOrWhiteSpace(loggerName))
{
throw new ArgumentNullException(nameof(loggerName));
}
_logger = LogManager.GetLogger(loggerName);
}
public string Name
{
get { return _logger.Name; }
}
public bool IsDebugEnabled
{
get { return _logger.IsDebugEnabled; }
}
public bool IsTraceEnabled
{
get { return _logger.IsTraceEnabled; }
}
public void Error(Exception exception)
{
_logger.Error(exception);
}
public void Error(Exception exception, string message, params object[] args)
{
_logger.Error(exception, message, args);
}
public void Error(string message, params object[] args)
{
_logger.Error(message, args);
}
public void Warn(string message, params object[] args)
{
_logger.Warn(message, args);
}
public void Info(string message, params object[] args)
{
_logger.Info(message, args);
}
public void Debug(string message, params object[] args)
{
_logger.Debug(message, args);
}
public void Trace(string message, params object[] args)
{
_logger.Trace(message, args);
}
}
}