मेरे पास एक पर्ल स्क्रिप्ट है जिसका उपयोग डेटाबेस की निगरानी के लिए किया जाता है और मैं इसे पावरहेल स्क्रिप्ट के रूप में लिखने की कोशिश कर रहा हूं।लॉग पढ़ने कुशल
पर्ल स्क्रिप्ट में एक ऐसा फ़ंक्शन है जो त्रुटि लॉग के माध्यम से पढ़ता है और फ़िल्टर करता है कि यह महत्वपूर्ण है और इसे वापस लौटाता है। यह लॉग फ़ाइल की वर्तमान स्थिति भी बचाता है ताकि अगली बार इसे लॉग को पढ़ना पड़े, फिर भी यह पूरे लॉग को पढ़ने के बजाय कहां से छोड़ा जा सकता है। यह फ़ंक्शन बताकर किया जाता है।
मुझे गेट-कंटेंट सेमीडलेट का उपयोग करने का विचार है, और अंतिम स्थिति में पढ़ना शुरू करें, फ़ाइल के अंत तक प्रत्येक पंक्ति को संसाधित करें और फिर स्थिति को सहेज लें।
क्या आपको कोई चाल पता है ताकि मैं पढ़ने के बाद लॉग फ़ाइल में स्थिति प्राप्त कर सकूं और पढ़ने के बाद किसी विशेष स्थान पर पढ़ सकूं।
या क्या यह हासिल करने के लिए एक बेहतर और/या आसान तरीका है?
Gísli
संपादित करें: यह स्क्रिप्ट के माध्यम से और कुछ अन्य उपकरण के साथ नहीं किया जा सकता है।
संपादित करें: तो मैं कहीं .NET एपीआई के साथ मिल रहा हूं लेकिन यह मेरे लिए काफी काम नहीं कर रहा है। मैं एक उपयोगी लिंक here और here
पाया यहाँ मैं अब तक है:
function check_logs{
param($logs, $logpos)
$count = 1
$path = $logs.file
$br = 0
$reader = New-Object System.IO.StreamReader("$path")
$reader.DiscardBufferedData()
$reader.BaseStream.Seek(5270, [System.IO.SeekOrigin]::Begin)
for(;;){
$line = $reader.ReadLine()
if($line -ne $null){$br = $br + [System.Text.Encoding]::UTF8.GetByteCount($line)}
if($line -eq $null -and $count -eq 0){break}
if($line -eq $null){$count = 0}
elseif($line.Contains('Error:')){
$l = $line.split(',')
Write-Host "$line $br"
}
}
}
मैं तलाश समारोह सही ढंग से उपयोग करने के लिए एक तरह से नहीं मिली है। क्या कोई मुझे सही दिशा दिखा सकता है?
यदि मैं यह यह outputs 5270 चलाने लेकिन अगर मैं लाइन बाहर के साथ इस चलाने जहाँ मैं आधार धारा में तलाश करने की कोशिश मैं:
2011-08-12 08:49:36.51 Logon Error: 18456, Severity: 14, State: 38. 5029
2011-08-12 08:49:37.30 Logon Error: 18456, Severity: 14, State: 38. 5270
2011-08-12 16:11:46.58 spid18s Error: 1474, Severity: 16, State: 1. 7342
2011-08-12 16:11:46.68 spid18s Error: 17054, Severity: 16, State: 1. 7634
2011-08-12 16:11:46.69 spid29s Error: 1474, Severity: 16, State: 1. 7894
पहले भाग कहाँ लाइन लॉग से पढ़ा है और अंत में संख्या उस बिंदु पर पढ़ने वाले बाइट्स का प्रतिनिधित्व करती है। तो जैसा कि आप देख सकते हैं कि अब मैं पहली त्रुटि रेखा को छोड़ने के लिए तलाश फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं लेकिन जैसा कि मैंने पहले कहा था कि आउटपुट 5270 है यदि मैं तलाश फ़ंक्शन का उपयोग करता हूं।
मुझे क्या याद आ रही है ?????
Gísli
+1। मैंने इससे पहले नहीं सुना था। बस सोच रहा है, क्या आप स्क्रिप्ट को पर्ल स्थापित करने से कम मुश्किल होने की उम्मीद करते हैं या क्या इसमें कोई आवश्यकता समस्या शामिल है? –
पुन: लिखना नरक है यदि आप यही पूछ रहे हैं। बात यह है कि हम दूसरों के लिए डेटाबेस की निगरानी करते हैं और इससे भविष्य में नए विंडोज सर्वर पर सेटअप आसान हो जाएगा। मुझे यह भी जिक्र करना चाहिए कि मैं इस गर्मी में एक इंटर्न हूं और यह प्रोजेक्ट मुझे कोड सीखने और स्क्रिप्ट्स क्या कर रहा है समझने का एक तरीका है। और वे चाहते थे कि कोई व्यक्ति शक्तिशक्ति सीखना शुरू कर दे। तो संक्षेप में, शायद पर्ल स्थापित करना और उस स्क्रिप्ट का उपयोग करना आसान होगा। – Gisli
इस बात पर बिल्कुल यकीन नहीं है कि आप इस समय के लिए क्या पूछ रहे हैं - मेरे पास एक और पढ़ा जाएगा लेकिन अपने चर की जांच करें - $ l विभाजन की वापसी है लेकिन आप $ लाइन लिख रहे हैं - क्या आपका मतलब था? – Matt