Beispiel #1
0
        public void Analyze()
        {
            QueryPerformanceCounter(ref _startTime);

            LogInfoEventArgs logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                "Starting..");

            _synContext.Post(OnAnalyzeLog, logInfo);

            if (_iisInfo == null)
            {
                if (!useExistData)
                {
                    if (!Verify())
                    {
                        return;
                    }
                }
                else
                {
                    _parser = LogParserFactory.CreateParserByType(EnumLogFile.W3CEXT);
                }
            }
            else
            {
                _parser = LogParserFactory.CreateParserByType(EnumLogFile.W3CEXT);
            }
            _parser.ParserID         = LogParserId.ToString();
            _parser.ParseLogHandler += ParseLogHandler;
            _parser.UseParallel      = _useParallel;

            if (useExistData)
            {
                _logFilePath = Path.GetDirectoryName(_fileName);
            }
            else
            {
                string path = string.Format("{0}\\Indihiang\\", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
                _logFilePath = String.Format("{0}\\Data\\{1}\\", path, LogParserId.ToString());
            }

            //_finish = false;
            //if (_dataQueue == null)
            //    _dataQueue = new Thread(DumpData);
            if (_thread == null)
            {
                _thread = new Thread(Process); // original
            }
            //_thread = new Thread(ParseLog);

            _thread.IsBackground = true;
            _thread.Start();
        }
Beispiel #2
0
        private bool CheckFile()
        {
            if (_fileName.StartsWith("--"))
            {
                List <string> files = IndihiangHelper.ParseFile(_fileName);

                LogInfoEventArgs logInfo = null;
                for (int i = 0; i < files.Count; i++)
                {
                    if (!string.IsNullOrEmpty(files[i]))
                    {
                        if (!File.Exists(files[i]))
                        {
                            logInfo = new LogInfoEventArgs(
                                LogParserId.ToString(),
                                EnumLogFile.UNKNOWN,
                                LogProcessStatus.FAILED,
                                "LogParser.CheckFile()",
                                String.Format("{0} isn't found", files[i]));
                            _synContext.Post(OnAnalyzeLog, logInfo);

                            return(false);
                        }
                    }
                }

                logInfo = new LogInfoEventArgs(
                    LogParserId.ToString(),
                    EnumLogFile.UNKNOWN,
                    LogProcessStatus.SUCCESS,
                    "Process()",
                    string.Format("Total log files are {0} files", files.Count.ToString()));
                _synContext.Post(OnAnalyzeLog, logInfo);
            }
            else
            if (!File.Exists(_fileName))
            {
                LogInfoEventArgs logInfo = new LogInfoEventArgs(
                    LogParserId.ToString(),
                    EnumLogFile.UNKNOWN,
                    LogProcessStatus.FAILED,
                    "LogParser.CheckFile()",
                    String.Format("{0} isn't found", _fileName));
                _synContext.Post(OnAnalyzeLog, logInfo);

                return(false);
            }

            return(true);
        }
Beispiel #3
0
        private bool CheckParser()
        {
            _parser          = LogParserFactory.CreateParser(_fileName);
            _parser.LogFile  = _fileName;
            _parser.ParserID = LogParserId.ToString();
            if (_parser == null)
            {
                LogInfoEventArgs logInfo = new LogInfoEventArgs(
                    LogParserId.ToString(),
                    EnumLogFile.UNKNOWN,
                    LogProcessStatus.FAILED,
                    "LogParser.Verify()",
                    "Application cannot verify log file format or there are more than log file format");
                _synContext.Post(OnAnalyzeLog, logInfo);

                return(false);
            }

            return(true);
        }
Beispiel #4
0
        private void Process()
        {
            Thread.Sleep(100);
            LogInfoEventArgs logInfo = null;

            if (_iisInfo != null)
            {
                LogFileProcessing();
            }

            logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                "Running log parser...");

            _synContext.Post(OnAnalyzeLog, logInfo);

            if (!useExistData)
            {
                if (_fileName.StartsWith("--"))
                {
                    _parser.LogFile = _fileName;
                }
                _parser.Parse();
            }

            logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                "Done");
            Thread.Sleep(100);
            _synContext.Post(OnEndAnalyze, logInfo);
        }
Beispiel #5
0
        private void LogFileProcessing()
        {
            LogInfoEventArgs logInfo;
            string           message = string.Empty;

            if (_iisInfo.LocalComputer)
            {
                message = "Checking log files...";
            }
            else
            {
                message = "Copy remote web server log file into local...";
            }

            #region Logging
            logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                message);

            _synContext.Post(OnAnalyzeLog, logInfo);
            #endregion

            string sourceFiles = string.Empty;

            if (!_iisInfo.LocalComputer)
            {
                RemoteFileCopyHelper.CopyRemoteFiles(_iisInfo);
                string path = string.Format("{0}\\Indihiang\\", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
                sourceFiles = String.Format("{0}\\Temp\\{1}{2}\\", path, _iisInfo.RemoteServer, _iisInfo.Id);
            }
            else
            {
                sourceFiles = String.Format("{0}\\W3SVC{1}\\", _iisInfo.LogPath, _iisInfo.Id);
            }

            int      total = 0;
            string[] files = Directory.GetFiles(sourceFiles);

            if (files != null)
            {
                total = files.Length;
                string file = "--";
                for (int i = 0; i < files.Length; i++)
                {
                    file = String.Format("{0}{1};", file, files[i]);
                }

                _parser.LogFile = file;
            }


            if (_iisInfo.LocalComputer)
            {
                message = "Check log files was done";
            }
            else
            {
                message = "Copy remote web server log files into local was done";
            }

            #region logging
            logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                message);
            _synContext.Post(OnAnalyzeLog, logInfo);
            logInfo = new LogInfoEventArgs(
                LogParserId.ToString(),
                EnumLogFile.UNKNOWN,
                LogProcessStatus.SUCCESS,
                "Process()",
                string.Format("Total remote log files are {0} files", total.ToString()));
            _synContext.Post(OnAnalyzeLog, logInfo);
            #endregion


            if (total == 0)
            {
                logInfo = new LogInfoEventArgs(
                    LogParserId.ToString(),
                    EnumLogFile.UNKNOWN,
                    LogProcessStatus.SUCCESS,
                    "Process()",
                    "No log file will be analyzed.");
                _synContext.Post(OnEndAnalyze, logInfo);
                Thread.Sleep(100);

                return;
            }
        }