#!/usr/bin/python3
import time

import JointLogCppLibPyB
from elt.log import CiiLogManager

_CII_LOGGER = "cii-logger"
_LOG_FILE_NAME = "ciiloghandler-file.log"

_PY_CONFIG_FILE_CONTENT = {
    "version": 1,
    "cii_log_buffer": {
        "enabled": True,
        "ttl_ms": 6000
    },
    "handlers": {
        "cii-file-handler": {
            "class": "elt.log.CiiLogHandler",
            "cii_logger_name": _CII_LOGGER
        }
    },
    "loggers": {
        "cii-logger": {
            "level": "INFO",
            "handlers": ["cii-file-handler"]
        }
    }
}

_LOG4CPLUS_PROPERTIES = {
    "log4cplus.rootLogger": "OFF",
    f"log4cplus.logger.{_CII_LOGGER}": "TRACE, my-Appender",
    "log4cplus.appender.my-Appender": "log4cplus::RollingFileAppender",
    "log4cplus.appender.my-Appender.File": _LOG_FILE_NAME,
    "log4cplus.appender.my-Appender.layout": "elt::log::layout::CiiLayout",
    "log4cplus.appender.my-Appender.MaxFileSize": "10000MB",
    "log4cplus.appender.my-Appender.MaxBackupIndex": "10"
}


def main():
    # Input the necessary Python logging and Log4Cpp (CII) configurations
    CiiLogManager.configure(config=_PY_CONFIG_FILE_CONTENT, cii_logger=False)
    CiiLogManager.configure(config=_LOG4CPLUS_PROPERTIES, cii_logger=True)

    # Extract the Loggers
    cii_logger = CiiLogManager.get_logger(_CII_LOGGER)
    
    # Start Cpp Tread
    JointLogCppLibPyB.start_service()

    # Log entries time
    for counter in range(10):
        cii_logger.info(f"Logging from Python application {counter}")
        time.sleep(0.1)

    # Stop Cpp Tread
    JointLogCppLibPyB.stop_service()


if __name__ == "__main__":
    main()
    