示例#1
0
        public static DataTable GetData(string queryST, ref string retErr)
        {
            DataTable EventDT = new DataTable("EventDT");

            try
            {
                // Instantiate the LogQuery object
                LogQuery oLogQuery = new LogQuery();

                // Instantiate the Event Log Input Format object
                EventLogInputFormat oEVTInputFormat = new EventLogInputFormat();

                // Set its "direction" parameter to "BW"
                oEVTInputFormat.direction = "BW";

                // Execute the query
                LogRecordSet oRecordSet = oLogQuery.Execute(queryST, oEVTInputFormat);

                int i = 0;

                for (; i < oRecordSet.getColumnCount(); i++)
                {
                    string colnm;
                    colnm = oRecordSet.getColumnName(i);

                    EventDT.Columns.Add(new DataColumn(colnm, typeof(string)));
                }

                for (; !oRecordSet.atEnd(); oRecordSet.moveNext())
                {
                    MSUtil.ILogRecord rowLP = null;
                    rowLP = oRecordSet.getRecord();

                    // populate holding table with site name & summary bytes for the period
                    DataRow dr = EventDT.NewRow();
                    for (int ct = 0; ct < i; ct++)
                    {
                        dr[ct] = rowLP.getValue(ct);
                    }
                    EventDT.Rows.Add(dr);
                }


                // Close the recordset
                oRecordSet.close();
            }
            catch (Exception exc)
            {
                retErr = "Unexpected error: " + exc.Message;
            }

            return(EventDT);
        }
 public override object ExecuteScalar()
 {
     checkCmd();
     try
     {
         LogRecordSet oRecordSet = this.connection.Query.Execute(this.cmdText, this.connection.LogFormat);
         dynamic      ret        = oRecordSet.getRecord().getValue(0);
         oRecordSet.close();
         return(ret);
     }
     catch (System.Runtime.InteropServices.COMException exc)
     {
         throw exc;
     }
 }
示例#3
0
        public static DataTable FSquery(string queryST, ref string retErr)
        {
            DataTable resultsDT = new DataTable("resultsDT");

            try
            {
                // Instantiate the LogQuery object
                LogQuery oLogQuery = new LogQuery();

                // Instantiate the File System Input Format object
                FileSystemInputFormat oFSInputFormat = new MSUtil.COMFileSystemInputContextClassClass();

                // Execute the query
                LogRecordSet oRecordSet = oLogQuery.Execute(queryST, oFSInputFormat);
                int          i          = 0;
                for (; i < oRecordSet.getColumnCount(); i++)
                {
                    string colnm;
                    colnm = oRecordSet.getColumnName(i);

                    resultsDT.Columns.Add(new DataColumn(colnm, typeof(string)));
                }

                for (; !oRecordSet.atEnd(); oRecordSet.moveNext())
                {
                    MSUtil.ILogRecord rowLP = null;
                    rowLP = oRecordSet.getRecord();

                    DataRow dr = resultsDT.NewRow();
                    for (int ct = 0; ct < i; ct++)
                    {
                        dr[ct] = rowLP.getValue(ct);
                    }
                    resultsDT.Rows.Add(dr);
                }

                // Close the recordset
                oRecordSet.close();
            }
            catch (Exception exc)
            {
                retErr = "Unexpected error: " + exc.Message;
            }

            return(resultsDT);
        }
示例#4
0
        public DataTable readFromEvt(string sql)
        {
            try
            {
                DataTable datat = new DataTable();
                datat.Columns.Add("事件ID", typeof(string));
                datat.Columns.Add("日期", typeof(string));
                datat.Columns.Add("来源", typeof(string));
                datat.Columns.Add("描述", typeof(string));
                // Instantiate the LogQuery object
                LogQuery oLogQuery = new LogQuery();
                // Instantiate the Event Log Input Format object
                EvtInputFormat oEvtInputFormat = new EvtInputFormat();
                // Set its "direction" parameter to "BW"
                //oEvtInputFormat.direction = "BW";
                // Create the query
                string query = sql;
                // Execute the query
                LogRecordSet oRecordSet = oLogQuery.Execute(query, oEvtInputFormat);
                while (!oRecordSet.atEnd())
                {
                    var     itemData = oRecordSet.getRecord();
                    DataRow dr       = datat.NewRow();
                    dr["事件ID"] = itemData.getValue("EventID").ToString();
                    dr["日期"]   = itemData.getValue("TimeGenerated").ToString();
                    dr["来源"]   = itemData.getValue("SourceName").ToString();
                    dr["描述"]   = itemData.getValue("Message").ToString();
                    datat.Rows.Add(dr);
                    oRecordSet.moveNext();
                }

                // Close the recordset
                oRecordSet.close();
                return(datat);
            }
            catch (System.Runtime.InteropServices.COMException exc)
            {
                MessageBox.Show("Unexpected error: " + exc.Message);
                return(null);
            }
        }
示例#5
0
        public QueryResult Execute()
        {
            lock (syncRoot)
            {
                this.isRunning = true;
            }
            Stopwatch watch = Stopwatch.StartNew();

            //if (this.logQuery != null)
            //{
            //    System.Runtime.InteropServices.Marshal.ReleaseComObject(this.logQuery);
            //    GC.SuppressFinalize(this.logQuery);
            //    this.logQuery = null;
            //}

            //this.logQuery = new MSUtil.LogQueryClassClass();

            this.results = null;
            QueryResult queryResult = new QueryResult();


            //MSUtil.COMChartOutputContextClassClass outPutFormat = new MSUtil.COMChartOutputContextClassClass();
            //outPutFormat.chartType = "PieExploded3D";
            //outPutFormat.view = true;

//			MSUtil.COMXMLOutputContextClassClass outPutFormat = new MSUtil.COMChartOutputContextClassClass();
//			this.logQuery.ExecuteBatch(Text, this.inputFormat, outPutFormat);
//			return null;


            MSUtil.ILogRecordset recordset = this.logQuery.Execute(Text, this.inputFormat);


            // TODO throw event on query finished

            bool columnsExtracted = false;
            long unitProcessed    = 0;

            // Browse the recordset
            for (; !recordset.atEnd() && unitProcessed < this.maxUnitsInResults /* && !cancelComputing.WaitOne(0,false) */; recordset.moveNext())
            {
                MSUtil.ILogRecord record = recordset.getRecord();

                // Remplissage des colonnes
                if (!columnsExtracted)
                {
                    for (int c = 0; c < recordset.getColumnCount(); c++)
                    {
                        DataColumn col = new DataColumn(recordset.getColumnName(c));
                        //object logRecord = record.getValueEx(c);
                        switch (recordset.getColumnType(c))
                        {
                        case 1:                                  // int32
                            col.DataType = typeof(int);
                            break;

                        case 2:                                  // double
                            col.DataType = typeof(double);
                            break;

                        case 4:                                  // datetime
                            col.DataType = typeof(DateTime);
                            break;

                        default:
                            col.DataType = typeof(string);
                            break;
                        }

                        queryResult.DataTable.Columns.Add(col);
                    }
                    columnsExtracted = true;
                }

                // on insert les datas
                DataRow dr = queryResult.DataTable.NewRow();
                dr[0] = record.getValue(0).ToString();

                //dataTableResults.ExtendedProperties.Add("source", record.getValue(0).ToString());

                for (int c = 1; c < recordset.getColumnCount(); c++)
                {
                    if (record.getValue(c) != DBNull.Value)
                    {
                        dr[c] = record.getValue(c).ToString();
                    }
                }
                //logQuery.inputUnitsProcessed;
                unitProcessed++;
                queryResult.DataTable.Rows.Add(dr);
                // MainForm.StatusBar.Text = string.Format("Computing in progress ... {0} line(s)",unitProcessed);
            }
            // MainForm.StatusBar.Text = string.Format("{0} input units processed",recordset.inputUnitsProcessed);
            recordset.close();


            queryResult.Duration = watch.Elapsed;

            lock (syncRoot)
            {
                this.isRunning = false;
            }
            this.results = queryResult;
            return(this.results);
        }
示例#6
0
        public static QueryResult Execute(string query, string inputName, Dictionary <PropertyInfo, object> properties)
        {
            Stopwatch watch             = Stopwatch.StartNew();
            int       maxUnitsInResults = 5000;       // TODO add this to user settings

            MSUtil.LogQueryClassClass logQuery = new MSUtil.LogQueryClassClass();

            QueryResult queryResult = new QueryResult();

            object inputFormat = SqalpApplication.Inputs[inputName].CreateInstance();

            foreach (PropertyInfo propertyInfo in properties.Keys)
            {
                try
                {
                    propertyInfo.SetValue(inputFormat, properties[propertyInfo], null);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex);
                }
            }


            MSUtil.ILogRecordset recordset = logQuery.Execute(query, inputFormat);

            bool columnsExtracted = false;
            long unitProcessed    = 0;

            // Browse the recordset
            for (; !recordset.atEnd() && unitProcessed < maxUnitsInResults /* && !cancelComputing.WaitOne(0,false) */; recordset.moveNext())
            {
                MSUtil.ILogRecord record = recordset.getRecord();

                // Remplissage des colonnes
                if (!columnsExtracted)
                {
                    for (int c = 0; c < recordset.getColumnCount(); c++)
                    {
                        DataColumn col = new DataColumn(recordset.getColumnName(c));
                        //object logRecord = record.getValueEx(c);
                        switch (recordset.getColumnType(c))
                        {
                        case 1:                                 // int32
                            col.DataType = typeof(int);
                            break;

                        case 2:                                 // double
                            col.DataType = typeof(double);
                            break;

                        case 4:                                 // datetime
                            col.DataType = typeof(DateTime);
                            break;

                        default:
                            col.DataType = typeof(string);
                            break;
                        }

                        queryResult.DataTable.Columns.Add(col);
                    }
                    columnsExtracted = true;
                }

                // on insert les datas
                DataRow dr = queryResult.DataTable.NewRow();
                dr[0] = record.getValue(0).ToString();

                //dataTableResults.ExtendedProperties.Add("source", record.getValue(0).ToString());

                for (int c = 1; c < recordset.getColumnCount(); c++)
                {
                    if (record.getValue(c) != DBNull.Value)
                    {
                        dr[c] = record.getValue(c).ToString();
                    }
                }
                //logQuery.inputUnitsProcessed;
                unitProcessed++;
                queryResult.DataTable.Rows.Add(dr);
                // MainForm.StatusBar.Text = string.Format("Computing in progress ... {0} line(s)",unitProcessed);
            }
            // MainForm.StatusBar.Text = string.Format("{0} input units processed",recordset.inputUnitsProcessed);
            recordset.close();


            queryResult.Duration = watch.Elapsed;

            if (logQuery != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(logQuery);
                GC.SuppressFinalize(logQuery);
                logQuery = null;
            }

            return(queryResult);
        }
示例#7
0
        private void btIIS(object sender, RoutedEventArgs e)
        {
            if (Common.checkLogParser())
            {
                #region 日志分析
                //string filename = "";
                Microsoft.Win32.OpenFileDialog dialogOpenFile = new Microsoft.Win32.OpenFileDialog();
                dialogOpenFile.Filter           = "IIS日志文件(*.log)|*.log";
                dialogOpenFile.RestoreDirectory = true;
                dialogOpenFile.Multiselect      = true;//允许同时选择多个文件
                //dialogOpenFile.InitialDirectory = "c:\\";
                //dialogOpenFile.FilterIndex = 2;
                List <string> filenames = new List <string>();
                if (dialogOpenFile.ShowDialog() == true)
                {
                    //filename = dialogOpenFile.FileName;
                    for (int fi = 0; fi < dialogOpenFile.FileNames.Length; fi++)
                    {
                        filenames.Add(dialogOpenFile.FileNames[fi].ToString());
                    }
                }
                else
                {
                    return;
                }

                //初始化
                LogQuery       oLogQuery       = new LogQuery();
                IISInputFormat oIISInputFormat = new IISInputFormat();
                DataTable      datat           = new DataTable();
                datat.Columns.Add("date", typeof(string));
                datat.Columns.Add("time", typeof(string));
                datat.Columns.Add("method", typeof(string));
                datat.Columns.Add("uri", typeof(string));
                datat.Columns.Add("query", typeof(string));
                datat.Columns.Add("ip", typeof(string));
                datat.Columns.Add("status", typeof(string));
                datat.Columns.Add("useragent", typeof(string));

                foreach (string filename in filenames)
                {
                    string       query      = @"SELECT date,time,cs-method,cs-uri-stem,cs-uri-query,c-ip,sc-status,cs(User-Agent)  from '" + filename + "'";// GROUP BY c-ip
                    LogRecordSet oRecordSet = oLogQuery.Execute(query, oIISInputFormat);
                    while (!oRecordSet.atEnd())
                    {
                        var     itemData = oRecordSet.getRecord();
                        DataRow dr       = datat.NewRow();
                        dr["date"]      = itemData.getValue("date").ToString("yyyy-MM-dd");
                        dr["time"]      = itemData.getValue("time").ToString("hh:mm:ss");
                        dr["method"]    = itemData.getValue("cs-method").ToString();
                        dr["uri"]       = itemData.getValue("cs-uri-stem").ToString();
                        dr["query"]     = itemData.getValue("cs-uri-query").ToString();
                        dr["ip"]        = itemData.getValue("c-ip").ToString();
                        dr["status"]    = itemData.getValue("sc-status").ToString();
                        dr["useragent"] = itemData.getValue("cs(User-Agent)").ToString();
                        datat.Rows.Add(dr);
                        oRecordSet.moveNext();
                    }
                    oRecordSet.close();
                }
                dgQueryResult.Columns[0].Header = (object)("日期");
                dgQueryResult.Columns[1].Header = (object)("时间");
                dgQueryResult.Columns[2].Header = (object)("方法");
                dgQueryResult.Columns[3].Header = (object)("相对路径");
                dgQueryResult.Columns[4].Header = (object)("查询");
                dgQueryResult.Columns[5].Header = (object)("IP");
                dgQueryResult.Columns[6].Header = (object)("状态");
                dgQueryResult.Columns[7].Header = (object)("用户代理");
                dgQueryResult.DataContext       = datat.DefaultView;
                #endregion
            }
            else
            {
                Xceed.Wpf.Toolkit.MessageBox.Show("该功能需要安装LogParser.", "警告", MessageBoxButton.OK, MessageBoxImage.Exclamation);

                System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();

                //设置外部程序名
                Info.FileName = "LogParser.msi";

                //设置外部程序工作目录为   C:\ 
                //Info.WorkingDirectory = @"D:\常用软件\eclipse";

                //最小化方式启动
                //Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;

                //声明一个程序类
                System.Diagnostics.Process Proc;

                try
                {
                    Proc = System.Diagnostics.Process.Start(Info);
                    System.Threading.Thread.Sleep(500);
                }
                catch (System.ComponentModel.Win32Exception)
                {
                    return;
                }
            }
        }