Customizing Logging

Amplify-BBOpt internally uses Python’s standard logging module for log management, with the logger name “amplify_bbopt” (AMPLIFY_BBOPT_LOGGER_NAME). This page explains how you can flexibly control the logging behavior.

Logger basics

  • Logger name: “amplify_bbopt” (AMPLIFY_BBOPT_LOGGER_NAME)

  • Default settings

    • Log level: INFO

    • Output destination: Standard output (sys.stdout)

    • Propagation: Disabled (False)

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)

Controlling logging

Disable logging

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.disabled = True

Changing log level

For example, to display only logs at WARNING level or higher:

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger, WARNING

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.setLevel(WARNING)

To change the level for each handler individually:

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger, WARNING

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
for handler in logger.handlers:
    handler.setLevel(WARNING)

Adding file output

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME, AMPLIFY_BBOPT_LOG_FORMATTER
from logging import FileHandler, getLogger

file_handler = FileHandler("amplify_bbopt.log")
file_handler.setFormatter(AMPLIFY_BBOPT_LOG_FORMATTER)
logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.addHandler(file_handler)

Enabling propagation to parent loggers

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.propagate = True

Checking logger status

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLevelName, getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)

print("Level:", getLevelName(logger.level))
print("Handlers:", logger.handlers)
print("Propagate:", logger.propagate)

Note

By combining multiple handlers, you can output logs simultaneously to both standard output and files. You can also customize log formatting or add filters using standard features of Python’s logging module.

For more details, see the official Python documentation: https://docs.python.org/3/library/logging.html