Multiple processes logging to single file

P

pachl

When using the native ruby logger, is it save to have multiple
processes writing to the same log file?

For instance, I have the following ruby source example:

# test.rb
require 'logger'

log = Logger.new('/tmp/RLOG')

20.times do
log.error "PID: #{$$}"
sleep 1
end

log.close
# end test.rb

Then I execute like so:

$ ruby test.rb & ruby test.rb & ruby test.rb

After inspection of the log file, each process logged 20 times, all
messages interleaved of course. It looks like it works, but am I
delusional? I'm on an OpenBSD box. Does the OS handle caching/writing
from multiple sources?

-pachl
 
P

Phillip Gawlowski

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

pachl wrote:

| After inspection of the log file, each process logged 20 times, all
| messages interleaved of course. It looks like it works, but am I
| delusional? I'm on an OpenBSD box. Does the OS handle caching/writing
| from multiple sources?

Yes, the OS should manage that (it is file-system level, rather than
userspace level). However, you can tweak your code to have
'transactional' logs (i.e. that every application logs a meaningful
chunk of information in one go).

Anyway, the file system and drivers take care of the actual writing.

Though, having everything log into one logfile *may* result in fractured
files, or odd race conditions and/or deadlocks. It might be saner to log
each process to its own file.

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com

Don't over-comment.
~ - The Elements of Programming Style (Kernighan & Plaugher)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkg0tLAACgkQbtAgaoJTgL9zpACfR/jr2oNQSrRc34nr7a6/rTX1
oGcAnj/BTPpEjGy9eZJz2NHYXBWPf5yk
=zdqV
-----END PGP SIGNATURE-----
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top