def METHOD_NAME(self, fl_ctx: FLContext):
    # get save path from FLContext
    app_root = fl_ctx.get_prop(FLContextKey.APP_ROOT)
    env = None
    run_args = fl_ctx.get_prop(FLContextKey.ARGS)
    if run_args:
        env_config_file_name = os.path.join(app_root, run_args.env)
        if os.path.exists(env_config_file_name):
            try:
                with open(env_config_file_name) as file:
                    env = json.load(file)
            except:
                self.system_panic(
                    reason="error opening env config file {}".format(env_config_file_name), fl_ctx=fl_ctx
                )
                return
    if env is not None:
        if env.get("APP_CKPT_DIR", None):
            fl_ctx.set_prop(AppConstants.LOG_DIR, env["APP_CKPT_DIR"], private=True, sticky=True)
        if env.get("APP_CKPT") is not None:
            fl_ctx.set_prop(
                AppConstants.CKPT_PRELOAD_PATH,
                env["APP_CKPT"],
                private=True,
                sticky=True,
            )
    log_dir = fl_ctx.get_prop(AppConstants.LOG_DIR)
    if log_dir:
        self.log_dir = os.path.join(app_root, log_dir)
    else:
        self.log_dir = app_root
    self._fobs_save_path = os.path.join(self.log_dir, self.save_name)
    if not os.path.exists(self.log_dir):
        os.makedirs(self.log_dir)
    fl_ctx.sync_sticky()