コード例 #1
0
ファイル: LogViewModel.cs プロジェクト: thienvc/LogViewer
 public LogViewModel()
 {
     AllAppInfo = new AppInfo()
     {
         IsChecked = true,
         AppName   = All
     };
     AllAppInfo.PropertyChanged += AllAppInfo_PropertyChanged;
     ApplicationNames            = new ObservableCollection <AppInfo> {
         AllAppInfo
     };
     AllThreadInfo = new ThreadInfo()
     {
         IsChecked = true,
         ThreadId  = All,
         AppName   = All
     };
     AllThreadInfo.PropertyChanged += AllThreadInfo_PropertyChanged;
     ThreadIds = new ObservableCollection <ThreadInfo> {
         AllThreadInfo
     };
     Loggers      = new ObservableCollection <LogNameInfo>();
     LoggerLevels = new ObservableCollection <string>
     {
         All,
         "FATAL",
         "ERROR",
         "WARN",
         "INFO",
         "DEBUG"
     };
     AllLogName = new LogNameInfo()
     {
         IsChecked = true,
         Name      = All,
         AppName   = All
     };
     AllLogName.PropertyChanged += AllLogName_PropertyChanged;
     Loggers.Add(AllLogName);
     CurrentApp    = AllAppInfo;
     CurrentLogger = AllLogName;
     CurrentThread = AllThreadInfo;
     CurrentLevel  = All;
 }
コード例 #2
0
        void ShowLog(LogEntity log)
        {
            if (log == null)
            {
                return;
            }
            _allLogs.Add(log);

            if (_logViewModel.ApplicationNames.All(app => app.AppName != log.App))
            {
                _logViewModel.ApplicationNames.Add(new AppInfo
                {
                    IsChecked = _logViewModel.AllAppInfo.IsChecked,
                    AppName   = log.App
                });
            }
            if (_logViewModel.ThreadIds.All(t => t.ThreadId != log.Thread))
            {
                var needAdd   = true;
                var newThread = new ThreadInfo()
                {
                    AppName   = log.App,
                    IsChecked = _logViewModel.AllThreadInfo.IsChecked,
                    ThreadId  = log.Thread
                };
                for (var i = 0; i < _logViewModel.ThreadIds.Count; i++)
                {
                    if (_logViewModel.ThreadIds[i].AppName != newThread.AppName)
                    {
                        continue;
                    }
                    _logViewModel.ThreadIds.Insert(i + 1, newThread);
                    needAdd = false;
                    break;
                }
                if (needAdd)
                {
                    _logViewModel.ThreadIds.Add(newThread);
                }
            }
            if (_logViewModel.Loggers.All(n => n.Name != log.Logger))
            {
                var newLogger = new LogNameInfo()
                {
                    AppName   = log.App,
                    IsChecked = _logViewModel.AllLogName.IsChecked,
                    Name      = log.Logger
                };
                var needAdd = true;
                for (var i = 0; i < _logViewModel.Loggers.Count; i++)
                {
                    if (_logViewModel.Loggers[i].AppName != newLogger.AppName)
                    {
                        continue;
                    }
                    _logViewModel.Loggers.Insert(i + 1, newLogger);
                    needAdd = false;
                    break;
                }
                if (needAdd)
                {
                    _logViewModel.Loggers.Add(newLogger);
                }
            }
            _logViewModel.Total++;
            switch (log.Level)
            {
            case "FATAL":
                _logViewModel.Fatal++;
                break;

            case "ERROR":
                _logViewModel.Error++;
                break;

            case "WARN":
                _logViewModel.Warn++;
                break;

            case "INFO":
                _logViewModel.Info++;
                break;

            case "DEBUG":
                _logViewModel.Debug++;
                break;
            }
            if (!CanShowThisLog(log))
            {
                return;
            }

            if (_lastLogId != 0 && log.LogId > _lastLogId)
            {
                return;
            }
            ShowLogItem(log);
        }