diff --git a/config/launcher.yaml b/config/launcher.yaml index 7423a6c..3c3e530 100644 --- a/config/launcher.yaml +++ b/config/launcher.yaml @@ -24,6 +24,11 @@ adf: flag: true filename: config/development.json + logger: + file_name: agent.log + file_level: DEBUG + stream_level: INFO + team: platoon: ambulance: diff --git a/pyproject.toml b/pyproject.toml index d00bae7..12f07a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "adf_core_python" -version = "0.2.7" +version = "0.2.8" description = "Agent Development Framework for Python" readme = "README.md" authors = [ diff --git a/src/adf_core_python/core/launcher/config_key.py b/src/adf_core_python/core/launcher/config_key.py index 90d4f3c..63a6f43 100644 --- a/src/adf_core_python/core/launcher/config_key.py +++ b/src/adf_core_python/core/launcher/config_key.py @@ -25,6 +25,10 @@ class ConfigKey: KEY_POLICE_OFFICE_COUNT: Final[str] = "adf.team.office.police.count" # adf-core-python KEY_PRECOMPUTE_DATA_DIR: Final[str] = "adf.agent.precompute.dir_name" + # logger + KEY_LOGGER_FILE_NAME: Final[str] = "adf.logger.file_name" + KEY_LOGGER_FILE_LEVEL: Final[str] = "adf.logger.file_level" + KEY_LOGGER_STREAM_LEVEL: Final[str] = "adf.logger.stream_level" # Gateway KEY_GATEWAY_HOST: Final[str] = "gateway.host" KEY_GATEWAY_PORT: Final[str] = "gateway.port" diff --git a/src/adf_core_python/core/logger/logger.py b/src/adf_core_python/core/logger/logger.py index 2cb3d0c..cd4b76b 100644 --- a/src/adf_core_python/core/logger/logger.py +++ b/src/adf_core_python/core/logger/logger.py @@ -56,12 +56,15 @@ def get_agent_logger(name: str, agent_info: AgentInfo) -> BoundLogger: ) -def configure_logger() -> None: +def configure_logger( + log_file: str = "agent.log", + file_level: int | str = logging.DEBUG, + stream_level: int | str = logging.INFO, +) -> None: # 既存のログファイルが存在する場合、日付付きでバックアップする - log_file = "agent.log" if os.path.exists(log_file): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - backup_file = f"agent_{timestamp}.log" + backup_file = f"{log_file}_{timestamp}.log" os.rename(log_file, backup_file) structlog.configure( @@ -83,13 +86,13 @@ def configure_logger() -> None: handler_stdout.setFormatter( structlog.stdlib.ProcessorFormatter(processor=ConsoleRenderer()) ) - handler_stdout.setLevel(logging.INFO) + handler_stdout.setLevel(stream_level) handler_file = logging.FileHandler(log_file) handler_file.setFormatter( structlog.stdlib.ProcessorFormatter(processor=JSONRenderer()) ) - handler_file.setLevel(logging.DEBUG) + handler_file.setLevel(file_level) root_logger = logging.getLogger() root_logger.addHandler(handler_stdout) diff --git a/src/adf_core_python/launcher.py b/src/adf_core_python/launcher.py index e69b17a..c3a111b 100644 --- a/src/adf_core_python/launcher.py +++ b/src/adf_core_python/launcher.py @@ -95,6 +95,24 @@ def __init__( action="store_true", help="using java module flag", ) + parser.add_argument( + "--logger-file-name", + type=str, + help="logger file name", + metavar="", + ) + parser.add_argument( + "--logger-file-level", + type=str, + help="logger file level", + metavar="", + ) + parser.add_argument( + "--logger-stream-level", + type=str, + help="logger stream level", + metavar="", + ) args = parser.parse_args() config_map = { @@ -116,7 +134,14 @@ def __init__( if value is not None: self.launcher_config.set_value(key, value) - configure_logger() + configure_logger( + log_file=args.logger_file_name + or self.launcher_config.get_value(ConfigKey.KEY_LOGGER_FILE_NAME, "agent.log"), + file_level=args.logger_file_level + or self.launcher_config.get_value(ConfigKey.KEY_LOGGER_FILE_LEVEL, "DEBUG"), + stream_level=args.logger_stream_level + or self.launcher_config.get_value(ConfigKey.KEY_LOGGER_STREAM_LEVEL, "INFO"), + ) self.logger = get_logger(__name__) self.logger.debug(f"launcher_config: {self.launcher_config}") diff --git a/uv.lock b/uv.lock index 1a50c61..cd2a3b3 100644 --- a/uv.lock +++ b/uv.lock @@ -16,7 +16,7 @@ wheels = [ [[package]] name = "adf-core-python" -version = "0.2.7" +version = "0.2.8" source = { editable = "." } dependencies = [ { name = "bitarray" },