in reply to Writing to a log file without colliding

Since a running system probably performs 1000s of filelocks per day and they are probably fairly efficient, my first suggestion would be to run a test, with parallel processes writing to a single log file, using a lock on the lock file. Make sure you only hold the lock once your string is fully built though. If you really can't live with the rate you see, then consider other solutions.

At some point, you must pay the price for combining the output into a single file. As many have mentioned, you can hide the latency by doing fancy things (i.e. sending messages via shared memory to a logging process, having a background thread log the message, combining files after the fact, etc), but with most of those you still must synchronize the output and pay a price (perhaps an even higher one overall on machine performance). They are also more complex and subject to their own set of problems (i.e. do all of your processes hang if your separate logging process dies/hangs?).

  • Comment on Re: Writing to a log file without colliding