logging.py: mutiple system users writing to same file getting permission errors.

evenrik evenson at gmail.com
Mon Dec 10 15:34:30 EST 2007


On Dec 7, 12:46 pm, Vinay Sajip <vinay_sa... at yahoo.co.uk> wrote:
> On Dec 6, 6:35 pm, evenrik <even... at gmail.com> wrote:
>
> > An a redhat box I have root, apache and other normal users run code
> > that uses theloggingmodule to write to the same log file.  Since
> > umasks are set to 2 or 022 this gets permission errors.
>
> > I have fixed my issue by patching theloggingcode everywhere there is
> > an open for write with:
> > try:
> >     old_umask = os.umask(0)
> >     # open for write here
> > finally:
> >     os.umask(old_umask)
>
> > Is there a better way to solve this issue?
> > Are there any security problems with this solution other than the log
> > file not being protected?
>
> Multiple processes writing to the same log file may step on each
> other's toes: logging contains thread synchronisation code but no
> protection against multiple processes accessing the same resource. The
> best solution would be to log from all processes to a SocketHandler,
> and then have a socket receiver process write the logs to file. This
> effectively serialises access to the log file. An example is given in
> the logging docs, see
>
> http://docs.python.org/lib/network-logging.html
>
> Of course, you can have the receiver process run under a uid of your
> choosing which has the appropriate permissions to write to the log
> file.
>
> Regards,
>
> Vinay Sajip

Thank you for the warning about multiple processes.  We decided to try
creating a DBHandler to write the logs to PostgeSQL.



More information about the Python-list mailing list