2015-08-04 23 views
7

Sto cercando di determinare se un utente ha scaricato un file da FTP utilizzando MS Log Parser 2.2MS Log Parser 2.2 Query Errore

non sono stato in grado di ottenere query SQL parser in corso, anche se ho usato diversi campioni di query .

annacquare Parser Query non funziona:

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 " 

Errore:

RecordSet cannot be used at this time [Unknown Error] 

Domanda:

Come si crea una query:

012.
- SELECT Date and Time of download 
- Where user = 'xxx' 
- WHERE RETR = is a download 
- WHERE Filename = u_ex150709.log or xxx 

Risposte in C# sono i benvenuti

Codice 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() 
+0

Si può fornire i registri di esempio? –

+0

Qual è il valore di 'rsLP.atEnd()' prima di chiamare l'ultima riga? –

risposta

3

Just like you I've written tools that leverage LogParser, eg http://eventanalyser.appointmentsbook.com/

Anche se nel 2004 (utilizzando Net 1.1) non ho avuto il beneficio del download: https://visuallogparser.codeplex.com/

Controllare il codice sorgente, ottenere la vostra richiesta lavorando in esso (VisualLogParser) e quindi semplicemente facendo riferimento al progetto e goditi la bontà della comunità open source.

quanto riguarda la tua domanda per quanto riguarda leeching FTP, Ecco l'articolo di 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 

Una cosa significa la sigla conoscere la vostra richiesta quando guardando il proprio ho creato un'interfaccia grafica per creare in modo dinamico, è' re virgolette singole mancanti in tutto il percorso del file:

strSQL = strSQL & "FROM C:\temp\Log\*.log " 

Prova questa:

strSQL = strSQL & "FROM 'C:\temp\Log\*.log' " 

(e utilizzare uno StringBuilder, non concatenazione di stringhe ... solo per ottenere l'abitudine di buone pratiche)

Secondo:

enter image description here

If the quotes don't solve the problem first go, then try a single log file rather than the wildcard *.log to narrow down on the syntax error. LogParser isn't designed to be helpful at diagnosing problem queries, instead Gabriele Giuseppini designed it to be fast, very fast !