Script para retirar os utilizadores dos logs dos ISAS agrupados por número de hits num dia.

Este script necessita de ter o logparser instalado. Ou no minimo a sua DLL registada.

Caminho onde está o Log: “E:ISALOG~1”
Nome dos Ficheiros têm de começar por: “ISALOG_”
' -----------------------------------------------'
' LogParser.vbs
' Script lê o conteudo do logs do ISA e coloca-os num ficheiroL.
' Autor Hugo Jorge Fernandes Rodrigues
' Versão 1.0 - 21 Setembro 2011 - Retira os utilizadores com mais hits por dia
'
'
' -----------------------------------------------'
 
Set oLogQuery = createobject("MSUtil.LogQuery")
Set oInput = createobject("MSUtil.logquery.W3CInputformat")
Set oOutput = createobject("MSUtil.logquery.CSVOutputFormat")
Dim DataInicial
Dim DataFinal
Dim LogPath
Dim sLogName
Dim sLogFileName
Dim UserName
Dim strDiaInicial
Dim strMesInicial
Dim strAnoInicial
DataInicial = InputBox ("Qual a data Inicial para pesquisa. Formato: DD-MM-AAAA","Dia Inicio",date())
DataFinal = InputBox ("Qual a data de fim da pesquisa. Formato: DD-MM-AAAA","Dia de FIM",date())
Datafinal = CDate(datafinal)
Datainicial = CDate(dataInicial)
do while datainicial = datafinal
     strDiaInicial = DatePart("d",DataInicial)
     if len(strDiaInicial)
          strDiaInicial = "0" & strDiaInicial
     end if
     strMesInicial = cstr(DatePart("m",DataInicial))
     if len(strMesInicial)
         strMesInicial = "0" & strMesInicial
     end if
     strAnoInicial = cstr(DatePart("yyyy",DataInicial))
     sLogFileName = strAnoInicial & strMesInicial & strDiaInicial
     LogPath = "E:ISALOG~1"
     sLogName = "ISALOG_" & sLogFileName & "*.w3c"
     strsqlbyIPAddress = "Select count(cs-username) as UserCount, cs-username INTO e:LogParser" & sLogFileName & ".csv FROM " & logPath & sLogName & " Group by cs-username"
     oLogQuery.ExecuteBatch strsqlbyIPAddress, oInput, oOutput
     datainicial = DateAdd("d",1,datainicial)
loop
MsgBox("FIM")

Às voltas com o logparser…

Bem tenho tido alguma experiência com o Microsoft Logparser 2.2.

A ferramenta está muito boa e permite-nos fazer imensas coisas.

Tenho uns logs criados diariamente e quero agarrar neles e coloca-los num servidor de SQL.

Aqui fica a minha solução em VBS que pode ser colocada numa task scheduler para ler os logs tipo w3c.

Priemeiro instalamos o logparser.

Depois registamos a dll que fica na pasta de instalação com o comando regsvr32 “caminho completo da dlllogparser.dll”

E aqui fica o código simples….

1
2
3
4
5
6
7
8
9
10
oLogQuery = createobject("MSUtil.LogQuery")
Set oInput = createobject("MSUtil.logquery.W3CInputformat")
Set oOutput = createobject("MSUtil.logquery.SQLOutputformat")
oOutput.driver = "SQL Server"
oOutput.server = "servidorSQLEXPRESS"
oOutput.Database = "LogParser"
oOutput.username = "db_user"
oOutput.password = "password"
oOutput.clearTable = False
oOutput.createTable = False

Nome do ficheiro a ir buscar:
Como o ficheiro é criado diariamente com o ano mes e dia concatenados com o seu nome tenho de voltar esse nome um dia para trás. 🙂

1
2
sLogName = "NomedeFicheiro" & year(now) & month(now) & day(dateadd("d",-1,now)) & ".log"
sLogName = "ISALOG_" & year(now) & "0622" & "*.w3c"

Querie que me interessa do ficheiro a ser analisado.

1
strsql = "select c-ip, cs-username, date, time, s-computername, cs-referred, r-host, r-ip, r-port, cs-protocol, cs-uri, sc-status, error-info, action from C:TestLog" & sLogName & " to LogsIsa"

executar os comandos anteriores.

1
oLogQuery.ExecuteBatch strsql, oInput, oOutput

Para a próxima mostro como visualizar os dados que acabei de colocar na Base de Dados… 🙂