version: 1 formatters: precise: {% if worker_name %} format: '%(asctime)s - worker:{{ worker_name }} - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% else %} format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' {% endif %} handlers: {% if LOG_FILE_PATH %} file: class: logging.handlers.TimedRotatingFileHandler formatter: precise filename: {{ LOG_FILE_PATH }} when: "midnight" backupCount: 6 # Does not include the current log file. encoding: utf8 # Default to buffering writes to log file for efficiency. This means that # there will be a delay for INFO/DEBUG logs to get written, but WARNING/ERROR # logs will still be flushed immediately. buffer: class: logging.handlers.MemoryHandler target: file # The capacity is the number of log lines that are buffered before # being written to disk. Increasing this will lead to better # performance, at the expensive of it taking longer for log lines to # be written to disk. capacity: 10 flushLevel: 30 # Flush for WARNING logs as well {% endif %} console: class: logging.StreamHandler formatter: precise loggers: synapse.storage.SQL: # beware: increasing this to DEBUG will make synapse log sensitive # information such as access tokens. level: INFO root: level: {{ SYNAPSE_LOG_LEVEL or "INFO" }} {% if LOG_FILE_PATH %} handlers: [console, buffer] {% else %} handlers: [console] {% endif %} disable_existing_loggers: false