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 не предназначен для диагностики проблемных запросов, вместо этого Габриэле Джузеппини разработал его быстро, очень быстро!

Другие вопросы по тегам