在CentOS系統中,C++程序的日志查看方式取決于日志的輸出目標(控制臺、文件、系統日志等)。以下是常見場景的具體查看方法:
若C++程序通過std::cout、spdlog的控制臺記錄器(如stdout_color_mt)或printf輸出日志,日志會直接顯示在終端。
./my_cpp_app # 程序運行時,日志會打印在終端
spdlog的控制臺記錄器,日志會實時顯示在終端。若程序將日志寫入文件(如通過spdlog的文件記錄器、自定義ofstream),需直接查看日志文件內容。
cat:一次性顯示整個文件內容(適合小文件)。cat logs/myapp.log # 替換為實際日志文件路徑
tail:實時查看文件末尾內容(適合持續輸出的日志,如服務日志)。tail -f logs/myapp.log # 實時刷新顯示新增日志
less:分頁查看大文件(支持上下翻頁、搜索)。less logs/myapp.log
spdlog的basic_logger_mt將日志寫入logs/basic.txt,可通過tail -f logs/basic.txt實時查看。若程序通過syslog函數(<syslog.h>)將日志發送到系統日志,需使用journalctl或查看/var/log/messages//var/log/syslog。
journalctl -t myApp # -t 指定程序標識(openlog的第一個參數)
journalctl -u my_cpp_app.service # 若程序以systemd服務運行
grep "myApp" /var/log/messages # CentOS 6及之前
grep "myApp" /var/log/syslog # 部分CentOS 7系統
openlog("myApp", LOG_PID, LOG_USER)后,日志會出現在journalctl -t myApp中。若程序通過sd_journal_send(<systemd/sd-journal.h>)將日志發送到journald,需使用journalctl查看。
journalctl # 查看所有日志(包含應用日志)
journalctl -u my_cpp_app.service # 若程序以systemd服務運行
journalctl _COMM=my_cpp_app # 通過comm字段過濾(程序名)
sd_journal_send("MESSAGE=Hello systemd")后,日志會出現在journalctl中。chmod 644 logs/myapp.log)。logrotate),避免日志文件過大??赏ㄟ^/etc/logrotate.d/下的配置文件設置輪轉規則。spdlog等庫,需確認日志輸出目標(控制臺/文件/syslog)及日志級別(如info、error),避免遺漏關鍵日志。