MS Log Parser 2.2 Ошибка запроса
Я пытаюсь определить, загрузил ли пользователь файл с FTP с помощью MS Log Parser 2.2
Я не смог запустить SQL-запрос синтаксического анализатора, хотя я использовал несколько примеров запросов.
Water Down Parser Query не работает:
strSQL = "SELECT date,COUNT(*) AS downloads,c-ip "
strSQL = strSQL & "FROM C:\temp\Log\*.log "
strSQL = strSQL & "WHERE cs-method='RETR' "
strSQL = strSQL & "GROUP BY date,c-ip "
Ошибка:
RecordSet cannot be used at this time [Unknown Error]
Вопрос:
Как мне создать запрос:
- SELECT Date and Time of download
- Where user = 'xxx'
- WHERE RETR = is a download
- WHERE Filename = u_ex150709.log or xxx
Ответы в C# также приветствуются
Код VB.net:
Dim rsLP As ILogRecordset = Nothing
Dim rowLP As ILogRecord = Nothing
Dim LogParser As LogQueryClassClass = Nothing
Dim W3Clog As COMW3CInputContextClassClass = Nothing
Dim UsedBW As Double = 0
Dim Unitsprocessed As Integer
Dim strSQL As String = Nothing
LogParser = New LogQueryClassClass()
W3Clog = New COMW3CInputContextClassClass()
Try
strSQL = "SELECT date,COUNT(*) AS downloads,c-ip "
strSQL = strSQL & "FROM C:\temp\Log\*.log "
strSQL = strSQL & "WHERE cs-method='RETR' "
strSQL = strSQL & "GROUP BY date,c-ip "
'run the query against W3C log
rsLP = LogParser.Execute(strSQL, W3Clog)
'Error occurs in the line below
rowLP = rsLP.getRecord()
1 ответ
Как и вы, я написал инструменты, которые используют LogParser, например, http://eventanalyser.appointmentsbook.com/
Хотя еще в 2004 году (с использованием.Net 1.1) у меня не было возможности загружать: https://visuallogparser.codeplex.com/
Проверьте их исходный код, включите в него ваш запрос (VisualLogParser), а затем просто сделайте ссылку на него в своем проекте и наслаждайтесь совершенством сообщества открытого исходного кода.
Что касается вашего запроса относительно FTP-пиявки, вот статья MSDN: http://blogs.msdn.com/b/robert_mcmurray/archive/2010/09/02/detecting-ftp-leeches-with-logparser.aspx
SELECT date,COUNT(*) AS downloads,c-ip,x-session
FROM *.log
WHERE cs-method='RETR'
GROUP BY date,c-ip,x-session
HAVING COUNT(*) > 100
Одна вещь действительно выделяется в вашем запросе, когда вы смотрите на тот, который я создал для динамического создания графического интерфейса, вы пропускаете одинарные кавычки по пути к файлу:
strSQL = strSQL & "FROM C:\temp\Log\*.log "
Попробуй это:
strSQL = strSQL & "FROM 'C:\temp\Log\*.log' "
(и использовать StringBuilder, а не конкатенацию строк... просто чтобы привыкнуть к лучшей практике)
Согласно:
Если кавычки не решают проблему сначала, то попробуйте один файл журнала, а не подстановочный знак
*.log
сузить синтаксическую ошибку. LogParser не предназначен для диагностики проблемных запросов, вместо этого Габриэле Джузеппини разработал его быстро, очень быстро!