Skip to content
This repository was archived by the owner on Jun 2, 2018. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions source/log4net-loggly-console/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@
</layout>
</appender>
<appender name="LogglyAppender" type="log4net.loggly.LogglyAppender, log4net-loggly">
<rootUrl value="https://logs.loggly.com/" />
<inputKey value="eb952942-e7c0-4f37-9746-8f018d329595" />
<rootUrl value="https://logs-01.loggly.com/" />
<inputKey value="777b14d4-2122-49fa-87c7-21b98b3de578" />
</appender>
<appender name="LogglyBufferringAppender" type="log4net.loggly.LogglyBufferringAppender, log4net-loggly">
<rootUrl value="https://logs.loggly.com/" />
<inputKey value="eb952942-e7c0-4f37-9746-8f018d329595" />
<rootUrl value="https://logs-01.loggly.com/" />
<inputKey value="777b14d4-2122-49fa-87c7-21b98b3de578" />
</appender>
</log4net>
</configuration>
25 changes: 22 additions & 3 deletions source/log4net-loggly/LogglyAppender.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using log4net.Appender;
using System;
using System.Diagnostics;
using System.Threading;
using log4net.Appender;
using log4net.Core;

namespace log4net.loggly
Expand All @@ -19,8 +22,24 @@ public class LogglyAppender : AppenderSkeleton

protected override void Append(LoggingEvent loggingEvent)
{
Formatter.AppendAdditionalLoggingInformation(Config, loggingEvent);
Client.Send(Config, Config.InputKey, Formatter.ToJson(loggingEvent));
ThreadPool.QueueUserWorkItem(x =>
{
try
{
Formatter.AppendAdditionalLoggingInformation(Config, loggingEvent);
Client.Send(Config, Config.InputKey, Formatter.ToJson(loggingEvent));
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.ToString());
#if DEBUG
Debug.WriteLine("loggly-log4net error \r\n:" + ex.ToString());
#endif
Trace.WriteLine("loggly-log4net error \r\n:" + ex.ToString());
}
});
}


}
}
2 changes: 2 additions & 0 deletions source/log4net-loggly/LogglyClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ namespace log4net.loggly
{
public class LogglyClient : ILogglyClient
{

public virtual void Send(ILogglyAppenderConfig config, string inputKey, string message)
{
var bytes = Encoding.UTF8.GetBytes(message);
var request = CreateWebRequest(config, string.IsNullOrWhiteSpace(inputKey) ? config.InputKey : inputKey);

using (var dataStream = request.GetRequestStream())
{
dataStream.Write(bytes, 0, bytes.Length);
Expand Down
79 changes: 42 additions & 37 deletions source/log4net-loggly/LogglyFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,46 +7,51 @@

namespace log4net.loggly
{
public class LogglyFormatter : ILogglyFormatter
{
private Process _currentProcess;
public class LogglyFormatter : ILogglyFormatter
{
private Process _currentProcess;

public LogglyFormatter()
{
_currentProcess = Process.GetCurrentProcess();
}
public LogglyFormatter()
{
_currentProcess = Process.GetCurrentProcess();
}

public virtual void AppendAdditionalLoggingInformation(ILogglyAppenderConfig config, LoggingEvent loggingEvent)
{
}
public virtual void AppendAdditionalLoggingInformation(ILogglyAppenderConfig config, LoggingEvent loggingEvent)
{
}

public virtual string ToJson(LoggingEvent loggingEvent)
{
return PreParse(loggingEvent).ToJson();
}
public virtual string ToJson(LoggingEvent loggingEvent)
{
return PreParse(loggingEvent).ToJson();
}

public virtual string ToJson(IEnumerable<LoggingEvent> loggingEvents)
{
return loggingEvents.Select(PreParse).ToJson();
}
public virtual string ToJson(IEnumerable<LoggingEvent> loggingEvents)
{
return loggingEvents.Select(PreParse).ToJson();
}

private object PreParse(LoggingEvent loggingEvent)
{
var exceptionString = loggingEvent.GetExceptionString();
if (string.IsNullOrWhiteSpace(exceptionString))
{
exceptionString = null; //ensure empty strings aren't included in the json output.
}
return new
{
level = loggingEvent.Level.DisplayName,
time = loggingEvent.TimeStamp.ToString("yyyyMMdd HHmmss.fff zzz"),
machine = Environment.MachineName,
process = _currentProcess.ProcessName,
thread = loggingEvent.ThreadName,
message = loggingEvent.MessageObject,
ex = exceptionString,
};
}
}
private object PreParse(LoggingEvent loggingEvent)
{
var exceptionString = loggingEvent.GetExceptionString();
if (string.IsNullOrWhiteSpace(exceptionString))
{
exceptionString = null; //ensure empty strings aren't included in the json output.
}

var result = new
{
level = loggingEvent.Level.DisplayName,
time = loggingEvent.TimeStamp.ToString("yyyyMMdd HHmmss.fff zzz"),
machine = Environment.MachineName,
process = _currentProcess.ProcessName,
thread = loggingEvent.ThreadName,
message = loggingEvent.MessageObject.ToString(),
loggerName = loggingEvent.LoggerName,
pid = GlobalContext.Properties["pid"],
ex = exceptionString,
};

return result;
}
}
}
5 changes: 3 additions & 2 deletions source/log4net-loggly/log4net-loggly.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.0\lib\net40-full\log4net.dll</HintPath>
<Reference Include="log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Text">
<HintPath>..\packages\ServiceStack.Text.3.8.5\lib\net35\ServiceStack.Text.dll</HintPath>
Expand Down
2 changes: 1 addition & 1 deletion source/log4net-loggly/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.0" targetFramework="net40" />
<package id="log4net" version="2.0.3" targetFramework="net40" />
<package id="ServiceStack.Text" version="3.8.5" targetFramework="net40" />
</packages>
1 change: 0 additions & 1 deletion source/packages/repositories.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@
<repositories>
<repository path="..\log4net-loggly\packages.config" />
<repository path="..\log4net-loggly-console\packages.config" />
<repository path="..\log4net-loggly-tests\packages.config" />
</repositories>