कल्पना कीजिए कि इस तरह के कुछ लॉग हैं

Jun2012|16:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|
Jun2012|17:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|
Jun2013|16:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|
Jun2012|18:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|
Jun2012|19:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|

..... मैं एक संपादक में लाइन नंबर देख सकता हूं लेकिन मैं प्रत्येक लाइन की लाइन नंबर की गणना करना चाहता हूं और इसका क्षेत्र बनाना चाहता हूं।

{...,"line_num" : 23, ...} 

मैं इसे कैसे बना सकता हूँ? क्या कोई उदाहरण दे सकता है?

1
kndr 27 नवम्बर 2020, 15:08

4 जवाब

सबसे बढ़िया उत्तर

मैंने उस मुद्दे को हल कर लिया है, अपना खुद का इनपुट कोडेक प्लगइन बनाने के साथ आप घटनाओं पर पुनरावृत्ति के माध्यम से लाइन नंबरों की गणना कर सकते हैं

0
kndr 13 जिंदा 2021, 17:41

लॉगस्टैश को किसी फ़ाइल में ईवेंट की लाइन संख्या के बारे में कोई जानकारी नहीं है, और यह केवल बाइट ऑफ़सेट को ट्रैक करता है जब आप file इनपुट का उपयोग करते हैं।

यदि आप अपने लॉग को लॉगस्टैश में भेजने के लिए फाइलबीट का उपयोग कर रहे हैं तो आपके पास बाइट ऑफ़सेट के बारे में भी जानकारी है, लेकिन वास्तविक लाइन नंबर की कोई ट्रैकिंग नहीं है।

यदि आप केवल अपने ईवेंट ऑर्डर करना चाहते हैं तो आप इस ऑफ़सेट का उपयोग कर सकते हैं, यदि आपको वास्तविक लाइन नंबर की आवश्यकता है तो आपको लॉगस्टैश पर भेजने से पहले इस जानकारी को अपने ईवेंट में जोड़ने का एक तरीका लागू करना होगा।

0
leandrojmp 27 नवम्बर 2020, 23:05

नीचे दिए गए readlines और with_index के साथ प्रयास करें

result = []
File.readlines('test.log').each.with_index(1) do |line, index|
  result << { content: line, line_num: index }
end

आउटपुट:

2.6.3 :042 > pp result
[{:content=>
   "Jun2012|16:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|\n",
  :line_num=>1},
 {:content=>
   "Jun2012|17:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|\n",
  :line_num=>2},
 {:content=>
   "Jun2013|16:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|\n",
  :line_num=>3},
 {:content=>
   "Jun2012|18:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|\n",
  :line_num=>4},
 {:content=>
   "Jun2012|19:52:39|10.0.0.1|log|keyinst||daemon|inbound|VPN-1 & FireWall-1|Certificate initialized|",
  :line_num=>5}]
0
user11350468 27 नवम्बर 2020, 18:25

रूबी का एक विशेष चर $. है जिसमें लाइन नंबर होता है।

File.foreach(logfile).each do |line|
   puts "#{$.}: #{line}"
end
0
rohit89 27 नवम्बर 2020, 15:55