`logger 'บันทึกข้อความไว้ที่ใดใน Arch Linux


18

loggerคำสั่งบันทึกรายการใน syslog /var/log/messagesซึ่งมักจะทำให้เส้นที่ไปยังไฟล์บางอย่างเช่น

ถ้าผมเข้าใจเอกสารอย่างถูกต้องใน Arch Linux ทั้งหมดเข้าสู่ระบบจะกระทำผ่าน systemd แต่ฉันไม่สามารถหารายการที่ใช้loggerjournalctl

  • เกิดอะไรขึ้นกับข้อความที่ให้ไว้loggerใน Arch Linux?
  • รายการบันทึกจัดเก็บอยู่ที่ไหน (grep ด่วนแนะนำ/var/log/journal/*/system.journal)
  • ฉันจะเข้าถึงบันทึกนี้ได้อย่างไร (ฉันต้องการตัวเลือกพิเศษjournalctlหรือไม่)

คำตอบ:


15

เนื่องจากข้อความบันทึกไม่ปรากฏในสมุดบันทึกทุกที่ฉันจึงสงสัยว่าคุณไม่มี syslog ในการตั้งค่าการส่งต่อบันทึกประจำวันอย่างถูกต้องและข้อความก็เริ่มลดลง เนื่องจากคุณอยู่บน Arch สิ่งนี้จึงง่ายต่อการแก้ไข ตรวจสอบให้แน่ใจว่าsyslog-ngมีการติดตั้งแพ็คเกจ:

pacman -S syslog-ng

จากนั้นตรวจสอบให้แน่ใจว่าเปิดใช้งานเมื่อบู๊ต:

systemctl enable syslog-ng

สุดท้ายเนื่องจากการเปิดใช้บริการไม่ได้เริ่มต้นโดยอัตโนมัติให้เริ่มบริการ:

systemctl start syslog-ng

ดูหน้า Arch Wiki นี้สำหรับรายละเอียด

ต่อไปนี้เป็นข้อมูลเบื้องต้นเกี่ยวกับสาเหตุที่ทำให้เกิดปัญหานี้:

มีวิธีการบางอย่างในการเข้าสู่ syslog แบบคลาสสิกและมีวิธีการบางอย่างในการเข้าสู่ระบบ systemd journal ใหม่ สิ่งเหล่านี้ไม่เข้ากัน แอปพลิเคชันที่รองรับ syslog ไม่สามารถสร้างขึ้นอย่างน่าอัศจรรย์เพื่อสนับสนุนวารสาร - ผู้เขียนจะต้องใช้คุณสมบัตินี้อย่างชัดเจน แอปพลิเคชันที่รองรับเจอร์นัลของ systemd โดยทั่วไปจะเรียกว่าสนับสนุน "เนทีฟ API" เมื่อรันบนระบบ systemd

เนื่องจาก syslog API และ journald API แตกต่างกันแอปพลิเคชันที่ไม่สนับสนุน journald API จะมีเพียงข้อความบันทึกของพวกเขาลดลง นี่คือสิ่งที่เกิดขึ้นในกรณีของคุณ

syslog-ngงานของแพคเกจคือการแปลเรียก API syslog เข้าเรียก API journald ด้วยวิธีนี้ข้อความ syslog ในที่สุดก็ทำให้มันลงในวารสาร


syslog-ngติดตั้งแล้ว แต่ไม่เปิดใช้งานฉันถือว่า journald มาแทนที่ทั้งหมดแล้ว เป็นloggerเพียงสามารถที่จะพูดคุยกับ syslog? วิธีที่ถูกต้องในการเข้าสู่เจอร์นัลคืออะไร?
michas

@michas ฉันได้เพิ่มส่วนที่หวังว่าจะชี้แจงว่า
strugee

"[.. ] เพื่อแปลการเรียก syslog API เป็นการเรียก journald API" - เท่าที่ฉันเห็นการแปลจะทำงานในลักษณะอื่น: ฉันค้นหาข้อความทั้งหมดใน / var / log / แต่เฉพาะในวารสาร journald
Michas

@ ไมเคิลที่อาจเป็นสิ่งที่บันทึกของฉันไม่แน่ใจ syslog-ngส่งต่อข้อความที่ส่งถึง syslog เพื่อ journald
strugee

1
ไม่logger foobar;journalctl|grep foobarอยู่ในรายชื่อระบบของคุณรายการ?
michas

0

daemons บางตัวไม่ได้เขียนบันทึกไว้/var/log/ใน Arch Linux และการกำหนดค่าสำหรับsyslog-ngนั้นแตกต่างจากคำตอบอื่น ๆ ที่ฉันเคยเห็น

syslog-ng.serviceบริการปกติไม่ได้อยู่ที่นั่น แต่จริงๆแล้วตั้งชื่อsyslog-ng@default.serviceแทน

สิ่งนี้จะไม่ทำงาน:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

ฉันต้องทำมันแตกต่างกันเล็กน้อยต่อArch Wiki :

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.