ใน C เราบันทึกด้วยวิธีนี้:
syslog( LOG_INFO, "proxying %s", url );
ใน Linux เราจะตรวจสอบบันทึกได้อย่างไร?
ใน C เราบันทึกด้วยวิธีนี้:
syslog( LOG_INFO, "proxying %s", url );
ใน Linux เราจะตรวจสอบบันทึกได้อย่างไร?
คำตอบ:
แล้วไงless /var/log/syslog
?
/etc/syslog.conf
tail -f /var/log/syslog
เป็นสิ่งที่ดีมากเพราะมันแสดงผลลัพธ์ล่าสุดเมื่อเข้าสู่ syslog จะมีประโยชน์หากคุณกำลังพยายามแก้ไขปัญหาบางอย่างอยู่แทนที่จะมองไปที่สิ่งที่ผ่านมาอย่างเคร่งครัด
บน Fedora 19 /var/log/messages
ดูเหมือนว่าคำตอบคือ แม้ว่าตรวจสอบ/etc/rsyslog.conf
ว่ามีการเปลี่ยนแปลงหรือไม่
โดยค่าเริ่มต้นจะเข้าสู่ระบบเข้าสู่ระบบที่/var/log/syslog
ดังนั้นจึงสามารถอ่านได้โดย:
tail -f /var/log/syslog
หากไม่มีไฟล์ให้ตรวจสอบ/etc/syslog.conf
เพื่อดูไฟล์คอนฟิกูเรชันสำหรับ syslogd โปรดทราบว่าไฟล์คอนฟิกูเรชันอาจแตกต่างกันดังนั้นให้ตรวจสอบกระบวนการทำงานว่าใช้ไฟล์อื่น
# ps wuax | grep syslog
root /sbin/syslogd -f /etc/syslog-knoppix.conf
หมายเหตุ: ในบางกระจาย (เช่น Knoppix) ทั้งหมดเข้าสู่ระบบข้อความจะถูกส่งไปเข้ากับขั้วที่แตกต่างกัน (เช่น/dev/tty12
) ดังนั้นในการเข้าถึงเช่นtty12
ลองกดControl+ +AltF12
คุณยังสามารถใช้lsof
เครื่องมือเพื่อค้นหาไฟล์บันทึกที่syslogd
กระบวนการใช้เช่น
sudo lsof -p $(pgrep syslog) | grep log$
ในการส่งข้อความทดสอบไปยัง syslogd ในเชลล์คุณอาจลอง:
echo test | logger
สำหรับการแก้ไขปัญหาให้ใช้เครื่องมือติดตาม ( strace
บน Linux dtruss
บน Unix) เช่น:
sudo strace -fp $(cat /var/run/syslogd.pid)
เด็ดมาก util journalctl
คือ
ตัวอย่างเช่นการแสดง syslog ไปยังคอนโซล: journalctl -t <syslog-ident>
ที่<syslog-ident>
เป็นตัวตนของคุณให้กับฟังก์ชั่นopenlog
เพื่อการเริ่มต้น syslog
syslog-ng
กับบริการ systemd คุณสามารถดู syslog ด้วยjournalctl --unit=syslog-ng@default.service
tail -f /var/log/syslog | grep process_name
process_name
ชื่อของกระบวนการที่เราสนใจอยู่
ที่ไหน
หากคุณชอบ Vim มันมีการเน้นไวยากรณ์ในตัวสำหรับไฟล์ syslog เช่นจะเน้นข้อความแสดงข้อผิดพลาดเป็นสีแดง
vi +'syntax on' /var/log/syslog
บนเราเตอร์ Asus สามารถทำได้ผ่านไฟล์
:/bin# busybox
นอกจากนี้ยังมีคำสั่งอื่น ๆ ที่เกี่ยวข้องกับ
syslog
เขียนลงในบันทึกระบบหรือไม่? (เว้นแต่คุณจะพูดถึงระดับล่างสำหรับการเข้าถึงบัฟเฟอร์วงแหวนข้อความเคอร์เนล แต่ฉันสงสัยว่าurl
เป็นint
)