On Sun, Oct 06, 2024 at 04:35:52PM +0200, Thomas wrote: > Hello everyone, > > I may have run into a corner case with newsyslog. Long story short, I set up > a second pflog interface to capture all traffic coming to/from my phone to > investigate an issue. > > I want to keep 1-2 days of log. I have set-up /etc/newsyslog.conf as such: > /var/log/pflog1 600 24 * 2 ZB "rcctl reload pflogd1" > > When I put my phone in offline mode at night, there's no traffic, so the only > mtime of the rotated files is its creation time. stat -f '%Sm%t%z%t%N' gives: > > Oct 6 06:00:33 2024 44 pflog1.2.gz > Oct 6 05:00:33 2024 44 pflog1.3.gz > Oct 6 04:00:33 2024 44 pflog1.4.gz > Oct 6 03:00:34 2024 44 pflog1.5.gz > Oct 6 02:00:33 2024 44 pflog1.6.gz > > I had included newsyslog -v in cron and the logs sent by cron are: > Date: Sun, 6 Oct 2024 02:00:02 +0200 (CEST) > /var/log/pflog1 <24ZB>: age (hr): 2 [2] --> trimming log.... > Date: Sun, 6 Oct 2024 03:00:03 +0200 (CEST) > /var/log/pflog1 <24ZB>: age (hr): 2 [2] --> trimming log.... > Date: Sun, 6 Oct 2024 04:00:02 +0200 (CEST) > /var/log/pflog1 <24ZB>: age (hr): 2 [2] --> trimming log.... > Date: Sun, 6 Oct 2024 05:00:02 +0200 (CEST) > /var/log/pflog1 <24ZB>: age (hr): 2 [2] --> trimming log.... > Date: Sun, 6 Oct 2024 06:00:02 +0200 (CEST) > /var/log/pflog1 <24ZB>: age (hr): 2 [2] --> trimming log.... > > So, it's always calculating 2 hours of duration (and trimming) although it's > only > been one hour. This issue does not happen during the day when the logs are > being filled with data. > > I'm no programmer, though looking through the source code of newsyslog shows > this formula: return ((int)(timenow - sb.mt_time + 1800) / 3600 > > If mt_time is the modification time, my only explanation is newsyslog is > creating the file the same second, an hour later which would return 1.5: > > $ bc -e "scale = 3; ($(date -j +"%s" 0600.33) - $(date -j +"%s" 0500.33) + > 1800) / 3600" -e quit > $ 1.500 > > And that this is rounded up to 2 hrs and triggers newsyslog... I am not sure > but cannot think of anything else
That would suprise me, as the computation is done using integer arithmetic and no rounding up plays a role there. -Otto > > I think that I can work around this (and check the theory...) setting up > another > cron job to touch /var/log/pflog1 every hour so that the mtime of the archive > cannot be exactly 5400 seconds later. > 59 * * * * /usr/bin/touch /var/log/pflog1 > > Greetings, > > Thomas >