2012-03-08 6 views
7

मैंने हाल ही में दृश्य इंटरफ़ेस के साथ Log Parser का उपयोग करना शुरू कर दिया है।विभिन्न फ़ोल्डर्स में लॉग के बहुत सारे पार्स को पार्स करने के लिए लॉग पार्सर का उपयोग

लॉग जो मैं पार्स करना चाहता हूं आईआईएस से आते हैं, और वे शेयरपॉइंट से संबंधित हैं। उदाहरण के लिए, मैं जानना चाहता हूं कि कितने लोग विशेष वेब पेजों पर जा रहे थे, आदि

और ऐसा लगता है कि आईआईएस विभिन्न फ़ोल्डरों में लॉग बनाता है (मुझे नहीं पता क्यों) और हर दिन एक नई लॉग फ़ाइल होती है एक अलग फ़ोल्डर

तो मेरा सवाल यह है कि, क्या उन सभी फ़ाइलों को अलग-अलग फ़ोल्डर्स में देखना संभव है?

मुझे पता है कि आप From-clause का उपयोग कर सकते हैं, अलग-अलग फ़ोल्डरों को रख सकते हैं, लेकिन यह बहुत मुश्किल है, खासकर अगर भविष्य में नए फ़ोल्डरों को जोड़ा जाता है। लक्ष्य एक स्क्रिप्ट बनाना है जिसे निष्पादित किया जाएगा।

तो में नाम का एक फ़ोल्डर लॉग उदाहरण के लिए लॉगफ़ाइल, मैं फ़ोल्डर्स फ़ोल्डर 1, folder2, 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

सत्यापित 21 अप्रैल 2014. यह डब्ल्यू: \ लॉगपार्सर \ * के रूप में भी काम करता है। लॉग – Jack

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 

तो बस एक बैच स्क्रिप्ट के लिए "recurse" के माध्यम से फ़ोल्डर संरचना बना सकते हैं और पार्स इसमें सभी फाइलें बैच स्क्रिप्ट करता है यह इस तरह दिखता है -

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

पथ जहाँ पार्स करने की आवश्यकता है लॉग फ़ाइलों स्थित हैं से यह निष्पादित। इसे एपेंड (>>) ऑपरेटर का उपयोग करके एक फ़ाइल में सभी पार्स किए गए लॉग थूकने के लिए अनुकूलित किया जा सकता है।

उम्मीद है कि इससे मदद मिलती है।

0

इसे जांचें: https://stackoverflow.com/a/31024196/4502867 शक्तियों का उपयोग करके उपशीर्षक में फ़ाइल आइटम प्राप्त करने और उन्हें पार्स करने के लिए।

1

मैं इस तरह की शक्तियों को पसंद करता हूं: Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"} या जो भी आप चाहते हैं।

+0

हैलो, और स्टैक ओवरव्लो में आपका स्वागत है। कृपया अपना उत्तर प्रारूपित करें, और अधिक जानकारी जोड़ें, क्योंकि उत्तर के रूप में एसओ के लिए सबसे उपयुक्त नहीं है। अधिक जानकारी के लिए कृपया http://stackoverflow.com/help/how-to-answer पर एक नज़र डालें। – Chaithanya

संबंधित मुद्दे