Logging

optuna.logging.get_verbosity()int[源代码]

返回目前 Optuna 的 root logger 的 logging 层级。

返回

Logging 层级,比如 optuna.logging.DEBUG 或者 optuna.logging.INFO.

注解

Optuna 包含以下 loggin 层级。

  • optuna.logging.CRITICAL, optuna.logging.FATAL

  • optuna.logging.ERROR

  • optuna.logging.WARNING, optuna.logging.WARN

  • optuna.logging.INFO

  • optuna.logging.DEBUG

optuna.logging.set_verbosity(verbosity: int)None[源代码]

设置 Optuna 的 root logger 的 logging 层级。

参数

verbosity -- Logging 层级,比如 optuna.logging.DEBUG 或者 optuna.logging.INFO.

optuna.logging.disable_default_handler()None[源代码]

禁用 Optuna 的 root logger 的默认句柄。

示例

停止并恢复 logging 层级到 sys.stderr.

import optuna

study = optuna.create_study()

# There are no logs in sys.stderr.
optuna.logging.disable_default_handler()
study.optimize(objective, n_trials=10)

# There are logs in sys.stderr.
optuna.logging.enable_default_handler()
study.optimize(objective, n_trials=10)
# [I 2020-02-23 17:00:54,314] Trial 10 finished with value: ...
# [I 2020-02-23 17:00:54,356] Trial 11 finished with value: ...
# ...
optuna.logging.enable_default_handler()None[源代码]

启用 Optuna 的 root logger 的默认句柄。

请参考 disable_default_handler() 中的例子。

optuna.logging.disable_propagation()None[源代码]

禁用库 log 输出的传递。

注意:log 传递默认情况下是被禁用的。

optuna.logging.enable_propagation()None[源代码]

启用库 log 输出的传递。

如果已经配置了 root logger 的话,请禁用 Optuna 的默认句柄,以防止重复 logging。

示例

将所有的log 输出传递到 root logger 以将它们存储到文件中。

import optuna
import logging

logger = logging.getLogger()

logger.setLevel(logging.INFO)  # Setup the root logger.
logger.addHandler(logging.FileHandler("foo.log", mode="w"))

optuna.logging.enable_propagation()  # Propagate logs to the root logger.
optuna.logging.disable_default_handler()  # Stop showing logs in sys.stderr.

study = optuna.create_study()

logger.info("Start optimization.")
study.optimize(objective, n_trials=10)

with open('foo.log') as f:
    assert f.readline() == "Start optimization.\n"
    assert f.readline().startswith("Trial 0 finished with value:")