forked from StockSharp/StockSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDebugLogListener.cs
More file actions
87 lines (74 loc) · 2.11 KB
/
DebugLogListener.cs
File metadata and controls
87 lines (74 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#region S# License
/******************************************************************************************
NOTICE!!! This program and source code is owned and licensed by
StockSharp, LLC, www.stocksharp.com
Viewing or use of this code requires your acceptance of the license
agreement found at https://github.com/StockSharp/StockSharp/blob/master/LICENSE
Removal of this comment is a violation of the license agreement.
Project: StockSharp.Logging.Logging
File: DebugLogListener.cs
Created: 2015, 11, 11, 2:32 PM
Copyright 2010 by StockSharp, LLC
*******************************************************************************************/
#endregion S# License
namespace StockSharp.Logging
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using StockSharp.Localization;
/// <summary>
/// The strategy logger that records the data to the debug window.
/// </summary>
public class DebugLogListener : LogListener
{
/// <summary>
/// To record messages.
/// </summary>
/// <param name="messages">Debug messages.</param>
protected override void OnWriteMessages(IEnumerable<LogMessage> messages)
{
var sb = new StringBuilder();
var currLevel = LogLevels.Info;
foreach (var message in messages)
{
if (message.IsDispose)
{
if (sb.Length > 0)
Dump(currLevel, sb);
Dispose();
return;
}
if (message.Level != currLevel)
{
Dump(currLevel, sb);
currLevel = message.Level;
}
sb.AppendFormat("{0} {1}", message.Source.Name, message.Message).AppendLine();
}
if (sb.Length > 0)
Dump(currLevel, sb);
}
private static void Dump(LogLevels level, StringBuilder builder)
{
var str = builder.ToString();
switch (level)
{
case LogLevels.Debug:
case LogLevels.Info:
Trace.TraceInformation(str);
break;
case LogLevels.Warning:
Trace.TraceWarning(str);
break;
case LogLevels.Error:
Trace.TraceError(str);
break;
default:
throw new ArgumentOutOfRangeException(nameof(level), level, LocalizedStrings.UnknownLevelLog);
}
builder.Clear();
}
}
}