2012-03-08 40 views
7

Gần đây tôi đã bắt đầu sử dụng Log Parser với giao diện trực quan.Sử dụng trình phân tích nhật ký để phân tích nhiều nhật ký trong các thư mục khác nhau

Nhật ký mà tôi muốn phân tích đến từ IIS và chúng có liên quan đến SharePoint. Ví dụ: tôi muốn biết có bao nhiêu người đã truy cập các trang web cụ thể, v.v.

Và có vẻ như IIS tạo nhật ký trong các thư mục khác nhau (Tôi không biết tại sao) và mỗi ngày có một tệp nhật ký mới một thư mục khác.

Vì vậy, câu hỏi của tôi là, có thể tiếp cận tất cả các tệp đó trong các thư mục khác nhau không?

Tôi biết bạn có thể sử dụng From-clause, đặt các thư mục khác nhau, nhưng quá khó, đặc biệt nếu trong các thư mục mới trong tương lai được thêm vào. Mục tiêu là tạo một kịch bản sẽ được thực hiện.

Vì vậy, ví dụ như trong một bản ghi thư mục có tên LogFiles, tôi có thư mục folder1, folder2, folder3, folder4, vv và trong mỗi thư mục có file log log1, log2, log 3, logN vv

Vì vậy, truy vấn của tôi phải như thế này: Select * FROM path/LogFiles/*/*.log nhưng trình phân tích cú pháp nhật ký không chấp nhận nó, vậy làm thế nào để nhận ra nó?

Trả lời

17

Bạn có thể sử dụng tùy chọn -recurse khi gọi logparser.

Ví dụ:

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

nơi query.sql chứa:

select * 
from .\Logs\*.log 

và trong thư mục hiện tại của tôi, có một thư mục gọi là "Nhật ký" có chứa nhiều thư mục con, mỗi chứa tệp nhật ký. Chẳng hạn như:

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

xác minh ngày 21 tháng 4 năm 2014. điều này cũng hoạt động như FROM W: \ LogParser \ *. Đăng nhập – Jack

5

Bạn có thể hợp nhất các bản ghi sau đó truy vấn log sáp nhập

những gì tôi phải làm là

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

Trợ giúp của LogParser không liệt kê tùy chọn -recurse nên tôi không chắc chắn nó vẫn được hỗ trợ. Tuy nhiên, đây là những gì tôi đã làm để có được xung quanh nó:

Hãy nói rằng bạn sử dụng lệnh sau để thực hiện logparser -

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

Sau đó chỉ cần tạo ra một kịch bản hàng loạt để "recurse" thông qua cấu trúc thư mục và phân tích tất cả các tệp trong đó. Tập lệnh batch thực hiện như sau -

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

Thực thi nó từ đường dẫn nơi tệp nhật ký cần được phân tích cú pháp được đặt. Điều này có thể được tùy chỉnh thêm để nhổ tất cả nhật ký được phân tích cú pháp trong một tệp bằng cách sử dụng toán tử chắp thêm (>>).

Hy vọng điều này sẽ hữu ích.

1

Tôi thích quyền hạn như sau: Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"} hoặc bất kỳ thứ gì bạn muốn.

+0

Xin chào và chào mừng bạn đến với StackOverflow. Vui lòng định dạng câu trả lời của bạn và thêm thông tin khác vì câu trả lời dưới dạng không phù hợp nhất cho SO. Vui lòng xem http://stackoverflow.com/help/how-to-answer để biết thêm thông tin. – Chaithanya

Các vấn đề liên quan