我有一个使用syslog和logrotate的yocto映像。我的系统日志允许创建两个日志文件。一个用于调试消息,一个用于所有其他消息。我的调试日志文件将增长到200kb,然后将移动到debug.0。永远不会创建debug.1、debug.2等归档文件。这意味着我正在丢失数据。我将这个文件的logrotate设置为每天激活,大小为10MB。
syslog在哪里设置日志文件的最大文件大小?在我的构建中,我的syslog.conf
是从busyboxappend.bb
安装的,并且包含
# /etc/syslog.conf Configuration file for busybox's syslogd utility
*.debug /home/root/.evcc_logs/debug
*.info /var/log/info
*.info /dev/console
busybox.bappend
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://evcc_kernel_features.cfg file://syslog.conf"
do_deploy() {
install -d ${D}/etc/
install -m 0755 ${WORKDIR}/syslog.conf ${D}/etc/
}
addtask deploy after do_install
do_install_append () {
install -d ${D}/home/root/.evcc_logs/
install -d ${D}/etc/evcc/
install -d ${D}/tmpfs/
install -d ${D}/tmpfs/can
}
FILES_${PN} += "/home/root/.evcc_logs/
/etc/evcc/
/tmpfs/
/tmpfs/can
"
logrotate.bappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files/:"
SRC_URI_append = " file://logrotate.conf file://services file://rotaterules"
inherit systemd
SYSTEMD_SERVICE_${PN} = " logrotate.service logrotate.timer"
do_install_append(){
install -d 755 ${D}/${sysconfdir}/logrotate.d/
install -m 0644 ${WORKDIR}/logrotate.conf ${D}/etc
install -m 0644 ${WORKDIR}/rotaterules/info ${D}/etc/logrotate.d/info
install -m 0644 ${WORKDIR}/rotaterules/debug ${D}/etc/logrotate.d/debug
install -m 0644 ${WORKDIR}/rotaterules/btmp ${D}/etc/logrotate.d/btmp
install -m 0644 ${WORKDIR}/rotaterules/wtmp ${D}/etc/logrotate.d/wtmp
install -d ${D}{systemd_system_unitdir}
install -m 0644 ${WORKDIR}/services/logrotate.service ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/services/logrotate.timer ${D}${systemd_system_unitdir}
}
FILES_${PN} += "
/etc/logrotate.conf
${base_libdir}/systemd/system/logrotate.service
${base_libdir}/systemd/system/logrotate.timer
/lib/systemd/system
"
logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# compress log files
compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
logrotate.timer(设置为每分钟运行一次以进行调试(
[Unit]
Description=Timer to run log rotation every day
Requires=logrotate.service
[Timer]
Unit=logrotate.service
OnCalendar=*-*-* *:*:00
Persistent=true
[Install]
WantedBy=timers.target
logrotate.service
[Unit]
Description=Log rotation service
[Service]
Type=simple
ExecStart=/usr/sbin/logrotate -f /etc/logrotate.conf
编辑:我认为我的系统可能有一个我不知道的固有的最大文件大小。这似乎不是一个功能。
事实证明这是busybox中的一个错误配置问题。我不得不进入日志记录设置并关闭旋转日志文件选项。我还增加了syslogd读取缓冲区的大小。
# CONFIG_FEATURE_ROTATE_LOGFILE is not set
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=512