Skip to content

Commit 4eb3efa

Browse files
author
mwatson
committed
trace listener
1 parent b29b799 commit 4eb3efa

File tree

5 files changed

+1136
-31
lines changed

5 files changed

+1136
-31
lines changed

Src/StackifyLib.StackifyTraceListener/StackifyTraceListener.cs

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,58 @@
33
using System.Diagnostics;
44
using System.Linq;
55
using System.Threading.Tasks;
6+
using StackifyLib.Internal.Logs;
7+
using StackifyLib.Models;
8+
using StackifyLib.Utils;
69

710
namespace StackifyLib
811
{
912
public class StackifyTraceListener : TraceListener
1013
{
14+
private StackifyLib.Internal.Logs.ILogClient _logClient = null;
15+
16+
public StackifyTraceListener()
17+
{
18+
_logClient = new LogClient("StackifyLib.net-TraceListener", null, null);
19+
}
20+
21+
22+
private void WriteToStackify(string level, string message)
23+
{
24+
try
25+
{
26+
27+
//make sure the buffer isn't overflowing
28+
//if it is skip since we can't do anything with the message
29+
30+
if (Logger.PrefixEnabled() || _logClient.CanQueue())
31+
{
32+
33+
LogMsg msg = new LogMsg();
34+
msg.Msg = message;
35+
msg.Level = level;
36+
37+
}
38+
else
39+
{
40+
StackifyAPILogger.Log("Unable to send log because the queue is full");
41+
}
42+
}
43+
catch (Exception ex)
44+
{
45+
StackifyAPILogger.Log(ex.ToString());
46+
}
47+
48+
}
49+
1150
public override void WriteLine(object o, string category)
1251
{
1352
base.WriteLine(o, category);
1453
}
1554

1655
public override void WriteLine(string message, string category)
1756
{
18-
base.WriteLine(message, category);
57+
WriteToStackify("TRACE", message);
1958
}
2059

2160
public override void WriteLine(object o)
@@ -25,22 +64,22 @@ public override void WriteLine(object o)
2564

2665
public override void Write(string message)
2766
{
28-
//ignore this
67+
WriteToStackify("TRACE", message);
2968
}
3069

3170
public override void WriteLine(string message)
3271
{
33-
72+
WriteToStackify("TRACE", message);
3473
}
3574

3675
public override void Fail(string message)
3776
{
38-
base.Fail(message);
77+
WriteToStackify("FAIL", message);
3978
}
4079

4180
public override void Fail(string message, string detailMessage)
4281
{
43-
base.Fail(message, detailMessage);
82+
WriteToStackify("FAIL", message);
4483
}
4584

4685
public override void Flush()
@@ -50,6 +89,21 @@ public override void Flush()
5089

5190
protected override void Dispose(bool disposing)
5291
{
92+
try
93+
{
94+
StackifyAPILogger.Log("TraceListener closing");
95+
96+
_logClient.Close();
97+
98+
//This is to force the metrics queue to flush as well
99+
StackifyLib.Internal.Metrics.MetricClient.StopMetricsQueue("TraceListener OnClose");
100+
}
101+
catch
102+
{
103+
104+
105+
}
106+
53107
base.Dispose(disposing);
54108
}
55109
}

Src/StackifyLib.StackifyTraceListener/project.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
"dependencies": {
55
"NETStandard.Library": "1.6.0",
6+
"StackifyLib": "1.25.4",
67
"System.Diagnostics.TraceSource": "4.0.0"
78
},
89

0 commit comments

Comments
 (0)