จะตรวจสอบ syslog ใน Bash บน Linux ได้อย่างไร


89

ใน C เราบันทึกด้วยวิธีนี้:

syslog( LOG_INFO, "proxying %s", url );

ใน Linux เราจะตรวจสอบบันทึกได้อย่างไร?


ฟังก์ชั่นไม่ได้syslog เขียนลงในบันทึกระบบหรือไม่? (เว้นแต่คุณจะพูดถึงระดับล่างสำหรับการเข้าถึงบัฟเฟอร์วงแหวนข้อความเคอร์เนล แต่ฉันสงสัยว่าurlเป็นint)
Cascabel

2
Q นี้ควรย้ายไปที่ unix.SE.com ไม่แน่ใจว่าคุ้มค่าหรือไม่ที่จะตั้งค่าสถานะสำหรับความสนใจของ mod (ฉันตั้งค่าสถานะ)
Alexander Malakhov

คำตอบ:


132

แล้วไงless /var/log/syslog?


1
@kern: คุณใช้ linux distro และเวอร์ชั่นไหน
NPE

6
@kern: ตรวจสอบเนื้อหาของคุณ/etc/syslog.conf
NPE

27
tail -f /var/log/syslogเป็นสิ่งที่ดีมากเพราะมันแสดงผลลัพธ์ล่าสุดเมื่อเข้าสู่ syslog จะมีประโยชน์หากคุณกำลังพยายามแก้ไขปัญหาบางอย่างอยู่แทนที่จะมองไปที่สิ่งที่ผ่านมาอย่างเคร่งครัด
counterbeing

19
เป็นจริง /etc/rsyslog.conf สำหรับ CentOs
Roman Goyenko

1
@ArunprasadRajkumar วิธีอื่นคือหลีกเลี่ยงการบันทึกข้อความที่ผู้ใช้ทั่วไปอ่านไปยัง syslog
Dmitry Grigoryev

41

บน Fedora 19 /var/log/messagesดูเหมือนว่าคำตอบคือ แม้ว่าตรวจสอบ/etc/rsyslog.confว่ามีการเปลี่ยนแปลงหรือไม่


ฉันได้ตรวจสอบบน openSUSE แล้วและสังเกตเห็นว่ามันใช้ได้ด้วย ขอบคุณสำหรับการแบ่งปัน!
silvioprog

25

โดยค่าเริ่มต้นจะเข้าสู่ระบบเข้าสู่ระบบที่/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)

22

เด็ดมาก util journalctlคือ

ตัวอย่างเช่นการแสดง syslog ไปยังคอนโซล: journalctl -t <syslog-ident>ที่<syslog-ident>เป็นตัวตนของคุณให้กับฟังก์ชั่นopenlogเพื่อการเริ่มต้น syslog


หากคุณใช้syslog-ngกับบริการ systemd คุณสามารถดู syslog ด้วยjournalctl --unit=syslog-ng@default.service
smac89

14

tail -f /var/log/syslog | grep process_nameprocess_nameชื่อของกระบวนการที่เราสนใจอยู่ ที่ไหน


3

หากคุณชอบ Vim มันมีการเน้นไวยากรณ์ในตัวสำหรับไฟล์ syslog เช่นจะเน้นข้อความแสดงข้อผิดพลาดเป็นสีแดง

vi +'syntax on' /var/log/syslog

-12

บนเราเตอร์ Asus สามารถทำได้ผ่านไฟล์

:/bin# busybox

นอกจากนี้ยังมีคำสั่งอื่น ๆ ที่เกี่ยวข้องกับ


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