We've got 10 (supposedly) identical servers, all running Ubuntu 12.04, Python 2.7, Django 1.3. We log to syslog using the logging module and a custom fomatter.
'formatters': { 'verbose': { 'format': '%(asctime)s [%(process)d]: %(program)s %(session_id)s %(request_id)s %(request_id_digest)s %(remote_addr)s %(name)s %(level\ name)s %(funcName)s() %(message)s', '()': 'songza.logging.ContextFormatter', }, }, There's nothing particularly exciting in the formatter code: class ContextFormatter(logging.Formatter): def format(self, record): record.program = context.get_program() record.request_id = context.get_request_id() record.request_id_digest = context.get_request_id_digest() record.session_id = context.get_session_id() or '-' record.remote_addr = context.get_remote_addr() or '-' return logging.Formatter.format(self, record) What's weird is that two of the servers, and only those two, stick a BOM (Byte Order Mark) in front of the message they log. It shows up in syslog as: 2013-01-09T00:00:00+00:00 web5.songza.com <U+FEFF>2013-01-0900:00:00,754 [18979]: [etc...] The other machines, never put the BOM in. Given that all 10 machines are ostensibly clones of each other, we're scratching our heads what might be different about those two which cause the BOMs to appear. Any ideas? I suppose it's possible it's a syslog config problem and not a Python problem, but I figured I'd start at the beginning of the chain. -- http://mail.python.org/mailman/listinfo/python-list