2012-03-08 51 views
7

我最近開始使用帶有可視化界面的Log Parser使用日誌解析器來解析不同文件夾中的大量日誌

我想解析的日誌來自IIS,它們與SharePoint相關。例如,我想知道有多少人訪問特定網頁等

它似乎IIS創建在不同的文件夾日誌(我不知道爲什麼),每天有一個新的日誌文件另一個文件夾。

所以我的問題是,是否有可能接近所有這些文件在不同的文件夾?

我知道你可以使用From-clause,把不同的文件夾,但它是特別是如果在加入未來的新文件夾太難了。目標是創建一個將被執行的腳本。

因此,例如,在一個名爲文件夾日誌日誌文件,我有文件夾文件夾1,文件夾2,folder3,folder4等,每個文件夾中有日誌文件LOG1,LOG2,日誌3,logN個等

所以我的查詢應該是這樣的:Select * FROM path/LogFiles/*/*.log但日誌解析器不接受它,所以如何實現它?

回答

17

調用LOGPARSER時,您可以使用-recurse選項。

例如:

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

其中query.sql的包含:

select * 
from .\Logs\*.log 

,並在我的當前目錄中,有一個名爲「日誌」目錄包含多個子目錄,每個包含日誌文件。如:

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

經過驗證2014年4月21日。這也適用於FROM W:\ LogParser \ * log – Jack 2014-04-21 12:49:43

5

您可以合併日誌然後查詢合併的日誌

什麼,我要做的就是

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

LogParser的幫助沒有列出-recurse選項,所以我不確定它是否仍受支持。但是,這是我做的繞過它:

假設您使用以下命令來執行LOGPARSER -

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

然後簡單的「遞歸」文件夾結構,以創建一個批處理腳本和解析其中的所有文件。這樣做的批處理腳本如下所示 -

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 
    ) 
) 

從需要解析的日誌文件所在的路徑執行它。 這可以進一步自定義,使用append(>>)運算符將所有解析的日誌吐出到一個文件中。

希望這會有所幫助。

1

我更喜歡這樣的powershell: Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"}或任何你想要的。

+0

您好,歡迎來到StackOverflow。請格式化您的答案,並添加更多信息,因爲現在的答案不適合SO。請參閱http://stackoverflow.com/help/how-to-answer以獲取更多信息。 – Chaithanya 2017-03-01 19:37:21