[สิ่งนี้ถูกเขียนขึ้นเมื่อไม่กี่ปีก่อนที่จะมีการยอมรับวารสารในระบบ systemd อย่างกว้างขวางและไม่ได้สัมผัสกับมัน ปัจจุบัน (ปลายปี 2561) ทั้ง journald และ (r) syslog ดังที่อธิบายไว้ด้านล่างนี้ถูกนำมาใช้กับเครื่อง distros เช่น Debian สำหรับคนอื่นคุณอาจต้องติดตั้ง rsyslog หากคุณต้องการใช้งานควบคู่ แต่การรวมเข้ากับ journald นั้นตรงไปตรงมา]
ฉันจะไม่หารือเกี่ยวกับการบันทึกเกี่ยวกับ Ubuntu โดยเฉพาะอย่างยิ่งเนื่องจากหัวข้อเป็นมาตรฐานสำหรับ linux โดยทั่วไป (และฉันเชื่อว่าส่วนใหญ่หรือทั้งหมดของสิ่งที่ฉันต้องพูดก็เป็นจริงโดยทั่วไปสำหรับรสชาติใด ๆ * ระวัง แต่ไม่ ใช้คำของฉันสำหรับสิ่งนั้น) ฉันจะไม่พูดเกี่ยวกับ "วิธีอ่านบันทึก" มากไปกว่าการตอบคำถามนี้:
ข้อสันนิษฐานนั้นถูกต้องแม้กระทั่งถูกเขียนขึ้นเพื่อความสามารถในการอ่านของมนุษย์หรือโดยทั่วไปแล้วจะมีการประเมินและใช้งานโดยเครื่องมืออื่น ๆ ?
ฉันเดาว่าขึ้นอยู่กับแอปพลิเคชัน แต่โดยทั่วไปแล้วอย่างน้อยในเรื่องของ syslog (ดูด้านล่าง) พวกเขาควรอ่านได้ "ความหมายสำหรับฉัน" เป็นปัญหาอีกแล้วฮ่า ๆ อย่างไรก็ตามมันอาจถูกจัดโครงสร้างด้วยวิธีการแยกวิเคราะห์ด้วยเครื่องมือมาตรฐาน (grep, awk ฯลฯ ) เพื่อวัตถุประสงค์เฉพาะที่ง่ายขึ้น
สิ่งแรกคือมีความแตกต่างระหว่างแอปพลิเคชันซึ่งทำการบันทึกของตนเองและแอปพลิเคชันที่ใช้ตัวบันทึกระบบ Apache โดยค่าเริ่มต้นเป็นแบบเดิมแม้ว่าจะสามารถกำหนดค่าให้ทำในภายหลัง (ซึ่งฉันคิดว่าคนส่วนใหญ่จะพิจารณาว่าไม่พึงประสงค์) แอปพลิเคชันที่ทำการบันทึกของตนเองสามารถทำได้ในลักษณะใดก็ตามโดยใช้ตำแหน่งใด ๆ สำหรับไฟล์ดังนั้นจึงไม่มีอะไรจะพูดเกี่ยวกับเรื่องนั้นมากนัก syslog
คนตัดไม้ระบบเรียกโดยทั่วไปว่า
syslog
"Syslog" เป็นมาตรฐานที่ใช้กับกระบวนการ daemonโดยทั่วไปเรียกว่าsyslogd (d สำหรับ daemon!) เด่น syslog rsyslogd
ภูตในปัจจุบันการใช้งานบนลินุกซ์รวมทั้งอูบุนตูเป็น Rsyslogd จะทำมาก แต่ตามที่กำหนดค่าออกจากกล่องบน distros ที่สุดมันจำลอง syslog /var/log
แบบดั้งเดิมซึ่งเรียงลำดับสิ่งที่เป็นไฟล์ข้อความธรรมดาใน คุณอาจพบเอกสารสำหรับมันใน/usr/share/doc/rsyslog-doc-[version]
(ระวังยังมี/usr/share/doc/rsyslog-[version]
แต่นั่นเป็นเพียงประกาศจากแพคเกจแหล่งเช่นNEWS
และChangeLog
) หากอยู่ที่นั่นก็คือ html แต่ Stack Exchange ไม่อนุญาตให้ฝังลิงก์ไฟล์ในเครื่อง:
file://usr/share/doc/rsyslog-doc/index.html
ดังนั้นคุณสามารถลองคัดลอกที่วางไว้ หากไม่มีอยู่อาจเป็นส่วนหนึ่งของแพ็คเกจแยกต่างหากที่ไม่ได้ติดตั้ง สอบถามระบบบรรจุภัณฑ์ของคุณ (เช่นapt-cache search rsyslog | grep doc
)
การกำหนดค่าที่อยู่ใน/etc/rsyslog.conf
ซึ่งมีหน้าคู่มือman rsyslog.conf
แม้ว่าในขณะที่หน้าคู่มือทำการอ้างอิงที่ดีมันอาจจะแทรกซึมน้อยกว่าเป็นบทนำ โชคดีที่พื้นฐานของหุ้น rsyslog.conf เป็นไปตามแบบดั้งเดิมของ syslog.conf ซึ่งมีการนำเสนอและแบบฝึกหัดมากมาย หนึ่งนี้เช่น; สิ่งที่คุณต้องการที่จะไปจากที่ในขณะที่ peering rsyslog.conf ท้องถิ่นของคุณเป็นความเข้าใจของสิ่งอำนวยความสะดวกและจัดลำดับความสำคัญ ( "ความสำคัญ" คือบางครั้งเรียกว่าLogLevel) เนื่องจากสิ่งเหล่านี้เป็นส่วนหนึ่งของมาตรฐาน syslog ดังกล่าว เหตุผลที่มาตรฐานนี้มีความสำคัญเนื่องจาก rsyslog ได้รับข้อมูลผ่านเคอร์เนลและสิ่งที่เคอร์เนลใช้คือมาตรฐาน
เกี่ยวกับการที่มี$
คำสั่งใน rsyslog.conf เหล่านี้มีความเฉพาะเจาะจง rsyslog และถ้าคุณติดตั้งที่แพคเกจ doc rsyslog_conf_global.html
ตัวเลือกที่คุณจะพบคำแนะนำเกี่ยวกับพวกเขาใน
ขอให้สนุก ... ถ้าคุณอยากรู้เกี่ยวกับวิธีการใช้งานใช้ตัดไม้ระบบดูที่และman logger
man 3 syslog
เข้าสู่ระบบการหมุน
วิธีการเชิงบรรทัดฐานของการหมุนบันทึกคือผ่านเครื่องมือที่เรียกว่าlogrotate
(และมีman logrotate
) วิธีเชิงบรรทัดฐานของการใช้ logrotate คือcron daemonแม้ว่าจะไม่ต้องทำแบบนั้น (เช่นถ้าคุณปิดเดสก์ทอปของคุณทุกวันคุณอาจทำเพียงครั้งเดียวตอนบู๊ตก่อนที่ syslog จะเริ่มทำงานแต่ เห็นได้ชัดว่าหลังจากติดตั้งระบบไฟล์แล้ว rw)
มีการแนะนำที่ดีเพื่อ logrotate เป็นที่นี่ โปรดทราบว่าlogrotate ไม่ได้มีไว้สำหรับ syslogเท่านั้น แต่สามารถใช้กับไฟล์ใด ๆ ได้เลย ไฟล์การกำหนดค่าพื้นฐานคือ/etc/logrotate.conf
แต่เนื่องจากการกำหนดค่ามีคำสั่ง "รวมถึง" สิ่งทั่วไปส่วนใหญ่จะเข้าสู่แต่ละไฟล์ใน/etc/logrotate.d
ไดเรกทอรี (ที่นี่ d มีไว้สำหรับไดเรกทอรีไม่ใช่ daemon; logrotate ไม่ใช่ daemon)
สิ่งสำคัญที่ควรพิจารณาเมื่อใช้ logrotate คือแอปพลิเคชันจะทำงานซ้ำเมื่อล็อกไฟล์ได้รับการ "หมุน" หรือกล่าวอีกนัยหนึ่งคือย้าย - ในขณะที่แอปพลิเคชันทำงานอยู่ WRT (r) syslogd มันจะหยุดเขียนลงในบันทึกนั้น (ฉันคิดว่ามีเหตุผลด้านความปลอดภัยสำหรับเรื่องนี้) วิธีปกติในการจัดการกับสิ่งนั้นคือการบอก syslog ให้รีสตาร์ท (และเปิดไฟล์ทั้งหมดใหม่อีกครั้ง) ซึ่งเป็นสาเหตุที่คุณจะเห็นpostrotate
คำสั่งในไฟล์ logrotate conf ที่ส่ง SIGHUP ไปยัง syslog daemon