diff --git a/src/YALV.Core/Domain/LogItem.cs b/src/YALV.Core/Domain/LogItem.cs
index 317580c..6802b76 100644
--- a/src/YALV.Core/Domain/LogItem.cs
+++ b/src/YALV.Core/Domain/LogItem.cs
@@ -54,6 +54,9 @@ private void assignLevelIndex(string level)
string ul = !String.IsNullOrWhiteSpace(level) ? level.Trim().ToUpper() : string.Empty;
switch (ul)
{
+ case "TRACE":
+ LevelIndex = LevelIndex.TRACE;
+ break;
case "DEBUG":
LevelIndex = LevelIndex.DEBUG;
break;
@@ -81,10 +84,11 @@ private void assignLevelIndex(string level)
public enum LevelIndex
{
NONE = 0,
- DEBUG = 1,
- INFO = 2,
- WARN = 3,
- ERROR = 4,
- FATAL = 5
+ TRACE = 1,
+ DEBUG = 2,
+ INFO = 3,
+ WARN = 4,
+ ERROR = 5,
+ FATAL = 6
}
}
diff --git a/src/YALV/Common/Converters/LevelToSolidColorConverter.cs b/src/YALV/Common/Converters/LevelToSolidColorConverter.cs
index 7f505cc..8a7b744 100644
--- a/src/YALV/Common/Converters/LevelToSolidColorConverter.cs
+++ b/src/YALV/Common/Converters/LevelToSolidColorConverter.cs
@@ -5,9 +5,12 @@
namespace YALV.Common.Converters
{
+ using YALV.Core.Domain;
+
public class LevelToSolidColorConverter
: IValueConverter
{
+ private SolidColorBrush traceColor = Application.Current.FindResource("TraceLevelColor") as SolidColorBrush;
private SolidColorBrush debugColor = Application.Current.FindResource("DebugLevelColor") as SolidColorBrush;
private SolidColorBrush infoColor = Application.Current.FindResource("InfoLevelColor") as SolidColorBrush;
private SolidColorBrush warnColor = Application.Current.FindResource("WarnLevelColor") as SolidColorBrush;
@@ -22,15 +25,17 @@ public object Convert(object value, Type targetType, object parameter, System.Gl
int levelIndex = (int)value;
switch (levelIndex)
{
- case 1:
+ case (int)LevelIndex.TRACE:
+ return traceColor ?? Brushes.Transparent;
+ case (int)LevelIndex.DEBUG:
return debugColor ?? Brushes.Transparent;
- case 2:
+ case (int)LevelIndex.INFO:
return infoColor ?? Brushes.Transparent;
- case 3:
+ case (int)LevelIndex.WARN:
return warnColor ?? Brushes.Transparent;
- case 4:
+ case (int)LevelIndex.ERROR:
return errorColor ?? Brushes.Transparent;
- case 5:
+ case (int)LevelIndex.FATAL:
return fatalColor ?? Brushes.Transparent;
default:
return Brushes.Transparent;
diff --git a/src/YALV/MainWindow.xaml b/src/YALV/MainWindow.xaml
index 0650937..c4eb4f2 100644
--- a/src/YALV/MainWindow.xaml
+++ b/src/YALV/MainWindow.xaml
@@ -160,6 +160,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
@@ -471,7 +484,7 @@
+ Value="3">
@@ -480,7 +493,7 @@
+ Value="4">
@@ -489,7 +502,7 @@
+ Value="5">
@@ -498,7 +511,7 @@
+ Value="6">
@@ -561,6 +574,25 @@
+
+
+
+
+
+
+
+
+
+ /// ShowLevelTrace Property
+ ///
+ public bool ShowLevelTrace
+ {
+ get { return _showLevelTrace; }
+ set
+ {
+ if (value != _showLevelTrace)
+ {
+ _showLevelTrace = value;
+ RaisePropertyChanged(PROP_ShowLevelTrace);
+ resetLevelSelection();
+ RefreshView();
+ }
+ }
+ }
+ private bool _showLevelTrace;
+ public static string PROP_ShowLevelTrace = "ShowLevelTrace";
+
///
/// ShowLevelDebug Property
///
@@ -799,7 +819,7 @@ public bool SelectAll
if (_selectAll)
{
- _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelError = _showLevelFatal = true;
+ _showLevelTrace = _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelError = _showLevelFatal = true;
refreshCheckBoxBinding();
RefreshView();
}
@@ -809,6 +829,32 @@ public bool SelectAll
private bool _selectAll;
public static string PROP_SelectAll = "SelectAll";
+ ///
+ /// SelectTrace Property
+ ///
+ public bool SelectTrace
+ {
+ get { return _selectTrace; }
+ set
+ {
+ if (value != _selectTrace)
+ {
+ _selectTrace = value;
+ RaisePropertyChanged(PROP_SelectTrace);
+
+ if (_selectTrace)
+ {
+ _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelError = _showLevelFatal = false;
+ _showLevelTrace = true;
+ refreshCheckBoxBinding();
+ RefreshView();
+ }
+ }
+ }
+ }
+ private bool _selectTrace;
+ public static string PROP_SelectTrace = "SelectTrace";
+
///
/// SelectDebug Property
///
@@ -824,7 +870,7 @@ public bool SelectDebug
if (_selectDebug)
{
- _showLevelInfo = _showLevelWarn = _showLevelError = _showLevelFatal = false;
+ _showLevelTrace = _showLevelInfo = _showLevelWarn = _showLevelError = _showLevelFatal = false;
_showLevelDebug = true;
refreshCheckBoxBinding();
RefreshView();
@@ -850,7 +896,7 @@ public bool SelectInfo
if (_selectInfo)
{
- _showLevelDebug = _showLevelWarn = _showLevelError = _showLevelFatal = false;
+ _showLevelTrace = _showLevelDebug = _showLevelWarn = _showLevelError = _showLevelFatal = false;
_showLevelInfo = true;
refreshCheckBoxBinding();
RefreshView();
@@ -876,7 +922,7 @@ public bool SelectWarn
if (_selectWarn)
{
- _showLevelDebug = _showLevelInfo = _showLevelError = _showLevelFatal = false;
+ _showLevelTrace = _showLevelDebug = _showLevelInfo = _showLevelError = _showLevelFatal = false;
_showLevelWarn = true;
refreshCheckBoxBinding();
RefreshView();
@@ -902,7 +948,7 @@ public bool SelectError
if (_selectError)
{
- _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelFatal = false;
+ _showLevelTrace = _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelFatal = false;
_showLevelError = true;
refreshCheckBoxBinding();
RefreshView();
@@ -928,7 +974,7 @@ public bool SelectFatal
if (_selectFatal)
{
- _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelError = false;
+ _showLevelTrace = _showLevelDebug = _showLevelInfo = _showLevelWarn = _showLevelError = false;
_showLevelFatal = true;
refreshCheckBoxBinding();
RefreshView();
@@ -1045,6 +1091,7 @@ public void LoadFileList(string[] pathList, bool add = false)
private void refreshCheckBoxBinding()
{
+ RaisePropertyChanged(PROP_ShowLevelTrace);
RaisePropertyChanged(PROP_ShowLevelDebug);
RaisePropertyChanged(PROP_ShowLevelInfo);
RaisePropertyChanged(PROP_ShowLevelWarn);
@@ -1055,6 +1102,7 @@ private void refreshCheckBoxBinding()
private void resetLevelSelection()
{
SelectAll = false;
+ SelectTrace = false;
SelectDebug = false;
SelectInfo = false;
SelectWarn = false;
@@ -1389,6 +1437,8 @@ private bool levelCheckFilter(object item)
{
switch (logItem.LevelIndex)
{
+ case LevelIndex.TRACE:
+ return ShowLevelTrace;
case LevelIndex.DEBUG:
return ShowLevelDebug;
case LevelIndex.INFO:
@@ -1408,6 +1458,21 @@ private bool levelCheckFilter(object item)
#region Counters
+ ///
+ /// ItemsTraceCount Property
+ ///
+ public int ItemsTraceCount
+ {
+ get { return _itemsTraceCount; }
+ set
+ {
+ _itemsTraceCount = value;
+ RaisePropertyChanged(PROP_ItemsTraceCount);
+ }
+ }
+ private int _itemsTraceCount;
+ public static string PROP_ItemsTraceCount = "ItemsTraceCount";
+
///
/// ItemsDebugCount Property
///
@@ -1483,6 +1548,21 @@ public int ItemsFatalCount
private int _itemsFatalCount;
public static string PROP_ItemsFatalCount = "ItemsFatalCount";
+ ///
+ /// ItemsTraceFilterCount Property
+ ///
+ public int ItemsTraceFilterCount
+ {
+ get { return _itemsTraceFilterCount; }
+ set
+ {
+ _itemsTraceFilterCount = value;
+ RaisePropertyChanged(PROP_ItemsTraceFilterCount);
+ }
+ }
+ private int _itemsTraceFilterCount;
+ public static string PROP_ItemsTraceFilterCount = "ItemsTraceFilterCount";
+
///
/// ItemsDebugFilterCount Property
///
@@ -1579,6 +1659,10 @@ private void updateCounters()
where it.Level.Equals("DEBUG", StringComparison.OrdinalIgnoreCase)
select it).Count();
+ ItemsTraceCount = (from it in Items
+ where it.Level.Equals("TRACE", StringComparison.OrdinalIgnoreCase)
+ select it).Count();
+
ItemsInfoCount = (from it in Items
where it.Level.Equals("INFO", StringComparison.OrdinalIgnoreCase)
select it).Count();
@@ -1607,6 +1691,10 @@ private void updateFilteredCounters(ICollectionView filteredList)
{
ItemsFilterCount = fltList.Count();
+ ItemsTraceFilterCount = (from it in fltList
+ where it.Level.Equals("TRACE", StringComparison.OrdinalIgnoreCase)
+ select it).Count();
+
ItemsDebugFilterCount = (from it in fltList
where it.Level.Equals("DEBUG", StringComparison.OrdinalIgnoreCase)
select it).Count();
@@ -1631,6 +1719,7 @@ where it.Level.Equals("FATAL", StringComparison.OrdinalIgnoreCase)
else
{
ItemsFilterCount = 0;
+ ItemsTraceFilterCount = 0;
ItemsDebugFilterCount = 0;
ItemsInfoFilterCount = 0;
ItemsWarnFilterCount = 0;