在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),避免遗漏关键日志。