संयोजन की पूंछ && journalctl


27

मैं अपने स्वयं के एप्लिकेशन के लॉगिंग कर रहा हूं और पोस्टग्रेज कर रहा हूं।

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log

मुझे pgpool के लॉग शामिल करने की आवश्यकता है। यह पहले सिसलॉग हुआ करता था लेकिन अब यह जर्नलैक्ट में है।

क्या पूंछ -f और& journalctl -f को एक साथ बाँधने का कोई तरीका है?

जवाबों:


27

आप उपयोग कर सकते हैं:

journalctl -u service-name -f

-फ, --फॉल

केवल सबसे हाल की जर्नल प्रविष्टियाँ दिखाएँ, और लगातार नई प्रविष्टियाँ प्रिंट करें क्योंकि वे पत्रिका में संलग्न हैं।

यहाँ मैंने दूसरों से इस उत्तर को अलग करने के लिए "सेवा-नाम" जोड़ा है; आप पाठ के बजाय वास्तविक सेवा नाम का विकल्प देते हैं service-name


20

आप अपनी लॉग प्रविष्टियों को जर्नल में अग्रेषित कर सकते हैं :

systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log

और फिर उपयोग करें journalctl -f... हालांकि जैसा कि मार्क ने उल्लेख किया है, जो सभी जर्नल प्रविष्टियों को प्रिंट करेगा।


उन लॉग से और उस विशेष इकाई से केवल संदेशों को फ़िल्टर करने का एक तरीका एक अलग का उपयोग करना है SYSLOG_IDENTIFIERअर्थात यूनिट फ़ाइल को संपादित करें और [Service]अनुभाग जोड़ के तहत जैसे

SyslogIdentifier=my_stuff

यूनिट को पुनरारंभ करें फिर systemd-catउसी पहचानकर्ता के साथ चलाएं

systemd-cat -t my_stuff tail -f /tmp/myapp.log /var/log/postgresql.log

और अंत में केवल उस विशेष पहचानकर्ता के लिए पत्रिका को क्वेरी करें:

journalctl -f -t my_stuff

4

यदि आपके पास बैश उपलब्ध है, तो आप मापदंडों में से एक के रूप में प्रक्रिया प्रतिस्थापन का उपयोग कर सकते हैं tail:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)

यह सुरुचिपूर्ण तरीका है जिसे मैंने भी आज़माया है, लेकिन यह काम नहीं करता है। टेल से पता चलता है कि यह / dev / fd / xx का उपयोग कर रहा है, लेकिन कोई लॉग प्रदर्शित नहीं होता है।
बाइक 12

सही बात; / dev / fd / xxx एक अस्थायी पाइप है जो प्रक्रिया प्रतिस्थापन को लागू करने के लिए बैश का उपयोग करता है; कोई भी पत्रिका आउटपुट वहां दिखाई देगा।
जेफ स्कालर

5
आप शायद पूरी पत्रिका का पालन नहीं करना चाहते हैं, लेकिन केवल उन लोगों के लिए जो कि इकाई इकाई के लिए हैं। सेवा नामित मान लिया जाये pgpool.service, कोशिश journalctl -fu pgpool.service। इसके अलावा, यदि आप इसे रूट के रूप में नहीं चला रहे हैं, तो सुनिश्चित करें कि उपयोगकर्ता systemd-journalसमूह में है!
मार्क स्टोसबर्ग

1

कुछ इस तरह की कोशिश करो:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.