Thanks for the info Kirk, and for letting us know about your logger plugin. It sounds like exactly what I need.
I think I'll override Kernel.puts to use your plugin. -Pete On May 8, 2007, at 8:47 AM, Kirk Haines wrote: > On 5/8/07, Pete DeLaurentis <[EMAIL PROTECTED]> wrote: >> Thanks for the explanation Luis. This makes good sense. It seems >> like Mongrel is intercepting the stdout + sterr (puts it all into >> mongrel.log), but it's not good to work with something that isn't >> threadsafe. > > This probably begs some elaboration on just what puts() does. It > writes your string in one write operation, and does the newline in a > second operation, which opens the possibility that Ruby can make a > context switch between them. If the newline is already in the string, > though, it is just a single write operation. You can also use write() > instead of puts() to explicitly make sure that everything is done in a > single write call. > > Take a look at the code in io.c for the details. > >> Makes me wonder if the rails logs are safe if you write to them from >> different mongrels in a cluster. Any experience with this? > > Even if it can be made "safe", contention from multiple processes > trying to write to one file can be a non-trivial performance hit. > This was one of my motivations for writing an async logger. I want > all of my app logs in the same place, even if I have multiple backend > processes, without worrying about resource contention. It's that, or > I have N log files, one for each backend process for my app. > > > Kirk Haines > _______________________________________________ > Mongrel-users mailing list > Mongrel-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users