2012-03-08 4 views
7

Recientemente comencé a usar Log Parser con interfaz visual.Usando el analizador de registro para analizar muchos registros en diferentes carpetas

Los registros que quiero analizar proceden de IIS y están relacionados con SharePoint. Por ejemplo, quiero saber cuántas personas estaban visitando determinadas páginas web, etc.

Y parece que IIS crea registros en diferentes carpetas (no sé por qué) y cada día hay un nuevo archivo de registro en una carpeta diferente.

Así que mi pregunta es, ¿es posible acercarse a todos esos archivos en diferentes carpetas?

Sé que puede usar From-clause, poner diferentes carpetas, pero es demasiado difícil, especialmente si en el futuro se agregan nuevas carpetas. El objetivo es crear una secuencia de comandos que se ejecutará.

Así, por ejemplo, en una carpeta con el nombre de registro archivos de registro, tengo carpetas carpeta1, carpeta2, carpeta3, Folder4, etc., y en cada carpeta hay archivos de registro log1, log 2, 3 log, logN, etc.

Así que mi consulta debería ser así: Select * FROM path/LogFiles/*/*.log pero el analizador de registros no lo acepta, entonces ¿cómo realizarlo?

Respuesta

17

Puede utilizar la opción -recurse al llamar LogParser.

Por ejemplo:

logparser file:"query.sql" -i:IISW3C -o:CSV -recurse 

donde query.sql contiene:

select * 
from .\Logs\*.log 

y en mi directorio actual, hay un directorio llamado "Registros" que contiene varios subdirectorios que contienen cada una archivos de registro. Tales como: ayuda

\Logs\server1\W3SVC1 
\Logs\server1\W3SVC2 
\Logs\server2\W3SVC1 
\Logs\server2\W3SVC2 
etc. 
+1

verificado el 21 de abril de 2014. esto también funciona como FROM W: \ LogParser \ *. Log – Jack

5

Puede combinar los registros a continuación, consulta el registro fusionado

lo que tengo que hacer es

LogParser.exe -i:w3c "select * into E:\logs\merged.log from E:\logs\WEB35\*, E:\logs\WEB36\*, E:\logs\WEB37\*" -o:w3c 
0

de LogParser no muestra la opción -recurse así que no estoy seguro de que todavía está soportado. Sin embargo, esto es lo que hice para conseguir alrededor de él:

Digamos que se utiliza el siguiente comando para ejecutar LogParser -

logparser "SELECT * INTO test.csv FROM 'D:\samplelog\test.log'" -i:COM -iProgID:Sample.LogParser.Scriptlet -o:CSV 

A continuación, basta con crear una secuencia de comandos por lotes para "recursivo" a través de la estructura de carpetas y analizar todos los archivos en ella. La secuencia de comandos por lotes que hace esto se parece a esto -

echo off 
for /r %%a in (*) do (
    for %%F in ("%%a") do (
     logparser "SELECT * INTO '%%~nxF'.csv FROM '%%a'" -i:COM -iProgID:Sample.LogParser.Scriptlet 
     REM echo %%~nxF 
    ) 
) 

ejecutarlo desde la ruta donde se encuentran los archivos de registro que necesitan ser analizada. Esto se puede personalizar aún más para escupir todos los registros analizados en un archivo usando el operador append (>>).

Espero que esto ayude.

1

Prefiero powershell como este: Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"} o lo que quieras.

+0

Hola y bienvenidos a StackOverflow. Por favor, formatee su respuesta y agregue más información, ya que la respuesta tal como está no es la mejor para SO. Eche un vistazo a http://stackoverflow.com/help/how-to-answer para obtener más información. – Chaithanya

Cuestiones relacionadas