You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.Host/Owin/NlogTextWriter.cs

77 lines
1.8 KiB

using System.IO;
using System.Text;
using NLog;
namespace NzbDrone.Host.Owin
{
public class NlogTextWriter : TextWriter
{
private readonly Logger _logger;
public NlogTextWriter(Logger logger)
{
_logger = logger;
}
public override Encoding Encoding => Encoding.Default;
public override void Write(char[] buffer, int index, int count)
{
Write(buffer);
}
public override void Write(char[] buffer)
{
Write(new string(buffer));
}
public override void Write(string value)
{
_logger.Log(GetLogLevel(value), value);
}
public override void Write(char value)
{
_logger.Trace(value);
}
private LogLevel GetLogLevel(string value)
{
var lower = value.ToLowerInvariant();
if (!lower.Contains("error"))
{
return LogLevel.Trace;
}
if (lower.Contains("sqlite"))
{
return LogLevel.Trace;
}
if (lower.Contains("\"errors\":null"))
{
return LogLevel.Trace;
}
if (lower.Contains("signalr"))
{
if (lower.Contains("an operation was attempted on a nonexistent network connection"))
{
return LogLevel.Trace;
}
if (lower.Contains("the network connection was aborted by the local system"))
{
return LogLevel.Trace;
}
if (lower.Contains("the socket has been shut down"))
{
return LogLevel.Trace;
}
}
return LogLevel.Error;
}
}
}