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
> 

Reply via email to