Logging
There is only one acceptable log format. It is this:
<time> <level> [<application>] <message>
The application can be left out if you're logging to individual files.
The time spec MUST be ISO8601. Nothing else is acceptable.
The time spec MUST include timezone. Your servers of course should be in UTC, per rule 8.
The time spec MUST NOT include spaces.
The time precision is up to you. Maybe leave out milliseconds for general logging.
Do NOT rotate your own logs - use logrotate. Sooner or later someone is going to rotate your logs forcefully anyway, so you might as well be set up for it.
Here's the One True Logger in python, with the Correct format, using WatchedFileHandler to allow for logrotate:
import logging
from logging.handlers import WatchedFileHandler
log_format = "%(asctime)s %(levelname)s %(message)s"
date_format = "%Y-%m-%dT%H:%M:%S%Z"
log_handler = logging.handlers.WatchedFileHandler(log_file)
formatter = logging.Formatter(log_format, date_format)
log_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(log_handler)
logger.setLevel(logging.DEBUG)