<div dir="ltr">With logto2 during uwsgi_setup_log_master fd=1 is still stdout, not our log file. So lseek on it fails.<br>This is because uwsgi_setup_log_master is called first and logto() is called after it. File descriptor switching required for uwsgi_setup_log_master() is done in logto().<br>
We need to change ordering here, I'll make a pull request.</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-06 12:37 GMT+02:00 Łukasz Mierzwa <span dir="ltr"><<a href="mailto:l.mierzwa@gmail.com" target="_blank">l.mierzwa@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">FYI - this is not related to namespaces, logto2 + log-maxsize doesn't work properly in any case.<br>
When uWSGI starts it write to file descriptor 2, it's always the log file. But after privilages drop when logto2 takes over it writes to file descriptor 3, since this is the value of uwsgi.original_log_fd.<br>
Parts of code uses hardcoded fd=2, parts are using original_log_fd. I think that original_log_fd should only be used if log-master is enabled, but I'm not sure yet.<br>This leads to strange bugs like lseek errors in uwsgi_check_logrotate() - it will return illegal seek error every time, I thinks this is happening since it tries to seek on fd=2 with SEEK_CUR of fd=3 (from original_log_fd, it's my rotated log fd). Seek error is  ignored (lseek returns <0) so when it's casted to unsigned long long uwsgi_check_logrotate() thinks that my log is extremely big, while it's still 0 bytes long.<br>

I'm gonna need some time to figure it out.</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-05 19:43 GMT+02:00 Łukasz Mierzwa <span dir="ltr"><<a href="mailto:l.mierzwa@gmail.com" target="_blank">l.mierzwa@gmail.com</a>></span>:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">FYI I'm done for today, but I'll try to debug it tomorrow (--namespace + --logto2 + --log-maxsize combination).</div>

<div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-05 18:07 GMT+02:00 Łukasz Mierzwa <span dir="ltr"><<a href="mailto:l.mierzwa@gmail.com" target="_blank">l.mierzwa@gmail.com</a>></span>:<div><div>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't think this is the case, I do have log-backupname set and new log file was created.</div><div class="gmail_extra">


<br><br><div class="gmail_quote">2014-04-05 18:03 GMT+02:00 Łukasz Mierzwa <span dir="ltr"><<a href="mailto:l.mierzwa@gmail.com" target="_blank">l.mierzwa@gmail.com</a>></span>:<div><div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">So I shall write one ;P</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-05 17:53 GMT+02:00 Roberto De Ioris <span dir="ltr"><<a href="mailto:roberto@unbit.it" target="_blank">roberto@unbit.it</a>></span>:<div>



<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br>
> Hi,<br>
><br>
> I'm not sure if this is bug with logging or I simply failed to find the<br>
> right combination of options. Right now I'm pushing logs from vassals<br>
> using<br>
> remote syslog plugin (localhost syslog over tcp), it works just fine. I<br>
> wanted to switch to plain log files, each vassal would have rotated log<br>
> file inside the namespace.<br>
><br>
> If I use --logto I must pass full path including namespace path, example:<br>
> --logto=/ns/app1/home/uwsgi.log<br>
> so I guess that logs are opened before jailing vassal.<br>
><br>
> If I'll add --log-maxsize it doesn't work regardless if I set full path,<br>
> or<br>
> just path inside the namespace. I think that uWSGI  tries to call rename()<br>
> using full path as first arg, but we are inside the namespace so it fails.<br>
><br>
> So i tried using --logto2 - it would open logfile after dropping<br>
> privileges, so it will happen inside my namespace. This works just fine.<br>
><br>
> So I've added --log-maxsize again, log is being rotated, but all writes<br>
> are<br>
> still going to rotated log, looks like it's not being reopened after<br>
> rotating. I've checked with lsof and it turns out that master process has<br>
> new file opened, but all workers keep old file opened.<br>
> I've tried adding --log-master, but it doesn't seem to have any  effect.<br>
><br>
> Am I missing something with this setup?<br>
><br>
<br>
</div></div>--logto2 seems the right approach to me, but the problem is here:<br>
<br>
<a href="https://github.com/unbit/uwsgi/blob/master/core/logging.c#L520" target="_blank">https://github.com/unbit/uwsgi/blob/master/core/logging.c#L520</a><br>
<br>
the filename checked is the one from --logto<br>
<br>
it should be an easy fix, i will wait for your patch ;)<br>
<span><font color="#888888"><br>
<br>
<br>
--<br>
Roberto De Ioris<br>
<a href="http://unbit.it" target="_blank">http://unbit.it</a><br>
_______________________________________________<br>
uWSGI mailing list<br>
<a href="mailto:uWSGI@lists.unbit.it" target="_blank">uWSGI@lists.unbit.it</a><br>
<a href="http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi" target="_blank">http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi</a><br>
</font></span></blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Łukasz Mierzwa
</font></span></div>
</blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Łukasz Mierzwa
</font></span></div>
</blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Łukasz Mierzwa
</font></span></div>
</blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Łukasz Mierzwa
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Łukasz Mierzwa
</div>