<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)">> > > 3. zlib_file.xpp, zlib_exception.xpp:<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > > will be removed or slightly changed; we can potentially use the linux<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > > logrotate which has built-in compression and file rotation (in this case<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > > these compression utilities will be removed).<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > > The latest log file isn't compressed any more. History log files are<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > > still compressed.<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > Just curious, how are you going to remove the oldest messages from the<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > latest file in runtime? You are not going to rewrite the entire file on<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> > every input character, are you?<br></span><span class="gmail-im" style="color:rgb(80,0,80)">><br></span><span class="gmail-im" style="color:rgb(80,0,80)">> The following is my current idea: we will rename the latest file to<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> something else and notify the writer (hostlogger) to close its old file<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> descriptor and open a new one (should be doable via linux logrotate and<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> inotify or some signal handlers, as logrotate is able to send some signals<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> to hostlogger if a rotation is performed). The writer keeps appending logs<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> most of the time using the same fd unless the latest file is rotated. This<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> should be better than truncating the file where the reader (BMCWeb) won't<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> have race conditions (it might read old snapshots but it is not a big deal<br></span><span class="gmail-im" style="color:rgb(80,0,80)">> in our case).</span><span class="gmail-im" style="color:rgb(80,0,80)"><br></span>Currently we can keep the last N lines of the host's output, the oldest<br>messages are removed. It is easy to implement with a buffer in memory.<br>But how are you going to get rid of the old lines if you write data directly<br>to the log file?<br>Rotation will not help you with that (we actually don't need to store such old<br>logs).</blockquote><div>We plan to implement something similar to <a href="https://linux.die.net/man/8/logrotate">rotate count</a> in linux logrotate. It is basically like a ring buffer in the file system. We keep N log files. The latest log file is in plain text and the writer keeps appending data to it. The rest N-1 files are compressed.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 26, 2021 at 1:56 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 Tue, May 25, 2021 at 11:51:44PM -0700, Nan Zhou wrote:<br>
> > > 3. zlib_file.xpp, zlib_exception.xpp:<br>
> > > will be removed or slightly changed; we can potentially use the linux<br>
> > > logrotate which has built-in compression and file rotation (in this case<br>
> > > these compression utilities will be removed).<br>
> > > The latest log file isn't compressed any more. History log files are<br>
> > > still compressed.<br>
> > Just curious, how are you going to remove the oldest messages from the<br>
> > latest file in runtime? You are not going to rewrite the entire file on<br>
> > every input character, are you?<br>
> <br>
> The following is my current idea: we will rename the latest file to<br>
> something else and notify the writer (hostlogger) to close its old file<br>
> descriptor and open a new one (should be doable via linux logrotate and<br>
> inotify or some signal handlers, as logrotate is able to send some signals<br>
> to hostlogger if a rotation is performed). The writer keeps appending logs<br>
> most of the time using the same fd unless the latest file is rotated. This<br>
> should be better than truncating the file where the reader (BMCWeb) won't<br>
> have race conditions (it might read old snapshots but it is not a big deal<br>
> in our case).<br>
<br>
Currently we can keep the last N lines of the host's output, the oldest<br>
messages are removed. It is easy to implement with a buffer in memory.<br>
But how are you going to get rid of the old lines if you write data directly<br>
to the log file?<br>
Rotation will not help you with that (we actually don't need to store such old<br>
logs).<br>
<br>
-- <br>
Regards,<br>
Artem Senichev<br>
Software Engineer, YADRO.<br>
</blockquote></div>