จะกำหนดทิศทางเอาต์พุตเจอร์นัลของบางหน่วยไปยังไฟล์เฉพาะได้อย่างไร?


12

ฉันมีระบบที่มี daemons หลายตัวกำลังทำงาน (เป็น systemd units) ที่ส่งออกบันทึกข้อมูลไปยังเจอร์นัลใน Arch Linux ฉันต้องการกำหนดเอาท์พุทเจอร์นัลของไฟล์หน่วยเหล่านั้นบางไฟล์ให้เป็นไฟล์ข้อความแยกต่างหากซึ่งฉันระบุตำแหน่งที่ตั้งไว้เป็นหลักโดยสร้างไฟล์บันทึกสำหรับชุดย่อยของหน่วย ฉันจะทำเช่นนั้นได้อย่างไร


คำถามที่เกี่ยวข้องคือunix.stackexchange.com/questions/468444
JdeBP

คำตอบ:


10

ดูเหมือนว่าเป็นไปไม่ได้และไม่ต้องการโดย upstream (การเปลี่ยนเส้นทาง stdout / stderr ไปยังแต่ละไฟล์) ดูเช่นhttp://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - อ่านทั้งเธรดสำหรับข้อมูลเพิ่มเติม ข้อมูลบริบทว่าสิ่งนี้มีจุดประสงค์ในการทำงานอย่างไร

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

คุณอาจต้องการดูที่มุมมอง stdout / stderr ของบริการ systemd

สิ่งที่คุณสามารถทำได้กับการตั้งค่าปัจจุบันของคุณคือใช้
journalctl -u yourunitname > yourlogfile_for_yourunitname
เพื่อกำหนดเอาท์พุทเจอร์นัลทั้งหมดสำหรับหน่วย "yourunitname" ของคุณลงในไฟล์

ในส่วนหลังคุณควรดูคำแนะนำจาก Lennart จากหัวข้อรายการส่งเมล์ข้างต้น:

ในรุ่นล่าสุด systemd สิ่งที่systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.serviceควรสร้างผลลัพธ์ที่ง่ายมากที่มีเพียงข้อความจริงและไม่มีอะไรอื่น คุณสามารถผ่าน "-f" และทำให้การแสดงสด "

แก้ไข: ที่ จริงแล้วสำหรับ systemd รุ่นใหม่คำสั่งเป็นเพียงjournalctlและจากสิ่งที่ฉันสามารถบอกได้คำสั่งยาวดังกล่าวข้างต้นเป็นเช่นเดียวกับjournalctl -u yourunitnameและคุณยังสามารถ-fมี "ติดตาม" เอาท์พุท (เช่นใน tailf หรือ tail -f)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.