コード例 #1
0
ファイル: LogParser.cs プロジェクト: thpy/temp
        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();
        }
コード例 #2
0
ファイル: LogParserFactory.cs プロジェクト: thpy/temp
        public static BaseLogParser CreateParserByType(EnumLogFile logFormat)
        {
            BaseLogParser baseParser = null;
            string        asm        = ConfigurationManager.AppSettings[logFormat.ToString()];

            if (!string.IsNullOrEmpty(asm))
            {
                object[] pars = new object[] { "", logFormat };
                baseParser = (BaseLogParser)Activator.CreateInstance(Type.GetType(asm, true), pars);
            }

            return(baseParser);
        }
コード例 #3
0
ファイル: LogParserFactory.cs プロジェクト: thpy/temp
        public static BaseLogParser CreateParser(string logFile)
        {
            BaseLogParser baseParser = null;
            EnumLogFile   logFormat  = EnumLogFile.UNKNOWN;

            if (logFile.StartsWith("--"))
            {
                List <EnumLogFile> listLogFormat = new List <EnumLogFile>();
                string             tmp           = logFile.Substring(2);
                string[]           files         = tmp.Split(new char[] { ';' });

                for (int i = 0; i < files.Length; i++)
                {
                    if (!string.IsNullOrEmpty(files[i]))
                    {
                        EnumLogFile tmpLog = GetLogFormat(files[i]);
                        if (!listLogFormat.Contains(tmpLog))
                        {
                            listLogFormat.Add(tmpLog);
                        }
                    }
                }

                // check double log format
                if (listLogFormat.Count > 1)
                {
                    return(null);
                }

                logFormat = listLogFormat[0];
            }
            else
            {
                logFormat = GetLogFormat(logFile);
            }

            string asm = ConfigurationManager.AppSettings[logFormat.ToString()];

            if (!string.IsNullOrEmpty(asm))
            {
                object[] pars = new object[] { logFile, logFormat };
                baseParser = (BaseLogParser)Activator.CreateInstance(Type.GetType(asm, true), pars);
            }

            return(baseParser);
        }
コード例 #4
0
ファイル: LogParser.cs プロジェクト: thpy/temp
        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);
        }