
# x service log which ssh
# x service log tail ssh
# x service log which ssh

___x_cmd_service_log(){
    [ "$#" -gt 0 ] ||   set -- tail

    local mode=;
    local op="$1";      shift
    case "$op" in
        -h|--help)                  ___x_cmd help -m service log "$@" ; return 0 ;;
        tail|cd|which|which_)       ___x_cmd_service_log_"$op" "$@" ;;
    esac

    local name="$1"

    local servicepath="$___X_CMD_SERVICE_FP_DATA/$name"
    local logpath="$pidpath/log"

    case "$mode" in
        cd)         ___x_cmd_cmds_cd "$logpath" ;;
        which)      ___x_cmd rat ;;
    esac
}

___x_cmd_service_log_which(){
    local name="$1"
    [ -n "$name" ] || N=service M="Not found service name" ret:log:1

    local x_
    ___x_cmd_service_log_which_ "$name"|| return $?
    printf "%s\n" "$x_"
}


___x_cmd_service_log_which_(){
    [ "$#" -gt 0 ] ||   set -- --help

    case "$1" in
        -h|--help)      ___x_cmd help -m service log "$@" ; return 0 ;;
    esac

    local name="$1"
    [ -n "$name" ] || N=service M="Not found service name" ret:log:1

    local fp_service="$___X_CMD_SERVICE_FP_DATA/$name"

    local fp_loglatest="$fp_service/log/LATEST"
    local logname; read -r logname <"$fp_loglatest"
    x_="$fp_service/log/$logname"
}

___x_cmd_service_log_cd(){
    [ "$#" -gt 0 ] ||   set -- --help

    case "$1" in
        -h|--help)      ___x_cmd help -m service log "$@" ; return 0 ;;
    esac

    local name="$1"
    [ -n "$name" ] || N=service M="Not found service name" ret:log:1

    local fp_service="$___X_CMD_SERVICE_FP_DATA/$name"

    local fp_loglatest="$fp_service/log/LATEST"
    local logname; read -r logname <"$fp_loglatest"
    local fp_log="$fp_service/log/$logname"
}

___x_cmd_service_log_tail(){
    [ "$#" -gt 0 ] ||   set -- --help

    local ___X_CMD_TAIL_MAIN_OPTS=

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m service log "$@" ; return 0 ;;
            -n)             ___x_cmd cmdstr ___X_CMD_TAIL_MAIN_OPTS -n "$1";  arg:2:shift   ;;
            -f)             ___x_cmd cmdstr ___X_CMD_TAIL_MAIN_OPTS "$1";     shift         ;;
            *)              break       ;;
        esac
    done

    local name="$1"; shift
    [ -n "$name" ] || N=service M="Not found service name" ret:log:1

    local fp_service="$___X_CMD_SERVICE_FP_DATA/$name"

    local fp_loglatest="$fp_service/log/LATEST"
    local logname; read -r logname <"$fp_loglatest"

    local fp_log="$fp_service/log/$logname"

    eval set -- "$___X_CMD_TAIL_MAIN_OPTS" "\"\$@\""
    ___x_cmd_cmds tail "$@" "$fp_log"
}
