<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-im" style="color:rgb(80,0,80)">> If there are too many logs in a boot cycle, won't the current hostlogger<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> lose some earlier logs (boot logs) as well?</span><span class="gmail-im" style="color:rgb(80,0,80)"><br></span>That's the point!<br>Hostlogger does not lose these logs. It writes the boot messages, then skips<br>the middle and writes the last 3000 lines when the host shuts down.<br>We have two log files per host session: start and end.<br>It is too expensive to store all host output, so mid-session messages are<br>skipped.<br>It can be easily implemented with a buffer, but I am not sure we can achieve<br>this with logrotate.</blockquote><div>Thanks for the information. I am not aware of this functionality in the current hostlogger. Are you saying it will be implemented in the future or I miss it in the current codes.</div><div>One of our options for log rotations is writing our own codes, I am sure we can implement the logic you mentioned above without too much effort.</div><div>The linux logrotate also has "prerotate scripts", we can carefully name the compressed log file and keep the oldest several ones (which have host boot logs) out of rotation.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-im" style="color:rgb(80,0,80)">> Or did me missing something?<br></span><span class="gmail-im" style="color:rgb(80,0,80)">><br></span><span class="gmail-im" style="color:rgb(80,0,80)">> Also, we already talked about it: there's a problem that if BMC loses the<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> power before it sends out a signal to hostlogger, data in memory won't be<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> persisted.</span><span class="gmail-im" style="color:rgb(80,0,80)"><br></span>Yes, I agree that this is a problem. But there are ways to fix it without<br>breaking the current functionality of Hostlogger.<br>We can use rsyslog with external log server, or increase the buffer size<br>in obmc-console-server, or use systemd-cat with logrotate.<br>We can even add a new mode to Hostlogger that will not use the buffer, but<br>as I said earlier, there are not many common parts.</blockquote><div>I guess you are arguing we need a new daemon rather than modify Hostlogger, right? <a class="gmail_plusreply" id="plusReplyChip-2" href="mailto:edtanous@google.com" tabindex="-1">+Ed Tanous</a> here to see what his opinion is.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 26, 2021 at 11:22 AM Artem Senichev <<a href="mailto:artemsen@gmail.com">artemsen@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, May 26, 2021 at 09:20:38AM -0700, Nan Zhou wrote:<br>
> ><br>
> > > We plan to implement something similar to rotate count<br>
> > > <<a href="https://linux.die.net/man/8/logrotate" rel="noreferrer" target="_blank">https://linux.die.net/man/8/logrotate</a>> in linux logrotate. It is<br>
> > basically<br>
> > > like a ring buffer in the file system. We keep N log files. The latest<br>
> > log<br>
> > > file is in plain text and the writer keeps appending data to it. The rest<br>
> > > N-1 files are compressed.<br>
> > In this case, you will keep full logs without gaps:<br>
> > ```<br>
> > Host start <- log is empty, start logging<br>
> > |<br>
> > [...] <- write file, compress and rotate file<br>
> > |<br>
> > Host reboot or shut down<br>
> > ```<br>
> > If there are too many logs, logrotate removes the oldest one and we lose<br>
> > the<br>
> > boot log (form host start).<br>
> > This is the default Hostlogger mode:<br>
> > ```<br>
> > Host start <- log is empty, start logging<br>
> > |<br>
> > [line 3000] <- flush 3000 lines to the persistent file<br>
> > |<br>
> > [...] <- these logs are skipped (the last 3000 lines are in memory)<br>
> > |<br>
> > Host reboot or shut down <- flush last 3000 lines to the file<br>
> <br>
> <br>
> Thanks for your explanation, but I didn't get it. Are you arguing that one<br>
> can keep more logs in memory rather than on disk?<br>
<br>
Of course not! =)<br>
<br>
> If there are too many logs in a boot cycle, won't the current hostlogger<br>
> lose some earlier logs (boot logs) as well?<br>
<br>
That's the point!<br>
Hostlogger does not lose these logs. It writes the boot messages, then skips<br>
the middle and writes the last 3000 lines when the host shuts down.<br>
We have two log files per host session: start and end.<br>
It is too expensive to store all host output, so mid-session messages are<br>
skipped.<br>
It can be easily implemented with a buffer, but I am not sure we can achieve<br>
this with logrotate.<br>
<br>
> Or did me missing something?<br>
> <br>
> Also, we already talked about it: there's a problem that if BMC loses the<br>
> power before it sends out a signal to hostlogger, data in memory won't be<br>
> persisted.<br>
<br>
Yes, I agree that this is a problem. But there are ways to fix it without<br>
breaking the current functionality of Hostlogger.<br>
We can use rsyslog with external log server, or increase the buffer size<br>
in obmc-console-server, or use systemd-cat with logrotate.<br>
We can even add a new mode to Hostlogger that will not use the buffer, but<br>
as I said earlier, there are not many common parts. <br>
<br>
-- <br>
Regards,<br>
Artem Senichev<br>
Software Engineer, YADRO.<br>
</blockquote></div>