#!/usr/bin/python3 

import logging
import logging.config

import time

logging.config.dictConfig(
    {
        "version": 1,
        "disable_existing_loggers": False,
        "formatters": {
            "standard": {
                "format": "%(asctime)s %(levelname)s %(name)s %(funcName)s %(lineno)d | %(message)s"
            }
        },
        "handlers": {
            "stderr": {
                "class": "logging.StreamHandler",
                "formatter": "standard"
            },
            "stdout": {
                "class": "logging.StreamHandler",
                "formatter": "standard",
                "stream": "ext://sys.stdout"
            },
            "file": {
                "class":
                "timeoutswitchingfilehandler.TimeoutSwitchingFileHandler",
                "formatter": "standard",
                "filename": "foo.",
                "min_timeout": 2,
                "max_timeout": 10,
            },
        },
        "loggers": {
            "": {
                "handlers": ["file"],
                "level": "DEBUG"
            }
        }
    }
)

log = logging.getLogger(__name__)

log.info("This is a test")
time.sleep(1)
log.info("Still first file")
time.sleep(1)
log.info("Still first file")
time.sleep(1)
log.info("Still first file")
time.sleep(1)
log.info("Still first file")
time.sleep(1)
log.info("Still first file")
time.sleep(3)
log.info("Second file")
for i in range(15):
    time.sleep(1)
    log.info("At some point we should switch again")
log.info("The log file should now close after 2 seconds")
time.sleep(20)
log.info("The final log message (in a different file again)")
