diff --git a/docs/deployment/logs.md b/docs/deployment/logs.md index 52588eabd..ef63fd47d 100644 --- a/docs/deployment/logs.md +++ b/docs/deployment/logs.md @@ -59,7 +59,7 @@ dokku logs:failed --all ### Docker Log Retention -Docker log retention can be specified via the `logs:set` command by specifying a value for `max-size`. Log retention is set via injected docker options for all applications, but is also available via a trigger for alternative schedulers. +Docker log retention can be specified via the `logs:set` command by specifying a value for `max-size`. Log retention is set via injected docker options for all applications, but is also available via the `logs-get-property` trigger for alternative schedulers. ```shell dokku logs:set node-js-app max-size 20m diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 0924d087e..571ddaf14 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -699,6 +699,22 @@ if [[ ! -f "$DOKKU_ROOT/HOSTNAME" ]]; then fi ``` +### `logs-get-property` + +- Description: Fetches a given logs property value +- Invoked by: +- Arguments: `$APP` `$PROPERTY` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +APP="$1"; PROPERTY="$2" + +# TODO +``` + ### `network-build-config` - Description: Rebuilds network configuration diff --git a/plugins/logs/Makefile b/plugins/logs/Makefile index 213c56394..eab1d71e3 100644 --- a/plugins/logs/Makefile +++ b/plugins/logs/Makefile @@ -1,5 +1,5 @@ SUBCOMMANDS = subcommands/failed subcommands/report subcommands/set subcommands/vector-logs subcommands/vector-start subcommands/vector-stop -TRIGGERS = triggers/docker-args-process-deploy triggers/install triggers/post-delete triggers/report +TRIGGERS = triggers/docker-args-process-deploy triggers/install triggers/logs-get-property triggers/post-delete triggers/report BUILD = commands subcommands triggers PLUGIN_NAME = logs diff --git a/plugins/logs/src/triggers/triggers.go b/plugins/logs/src/triggers/triggers.go index 0fd62af87..58e951171 100644 --- a/plugins/logs/src/triggers/triggers.go +++ b/plugins/logs/src/triggers/triggers.go @@ -23,6 +23,10 @@ func main() { err = logs.TriggerDockerArgsProcessDeploy(appName) case "install": err = logs.TriggerInstall() + case "logs-get-property": + appName := flag.Arg(0) + property := flag.Arg(1) + err = logs.TriggerLogsGetProperty(appName, property) case "post-delete": appName := flag.Arg(0) err = logs.TriggerPostDelete(appName) diff --git a/plugins/logs/triggers.go b/plugins/logs/triggers.go index 3058ce9d1..175eb0c6e 100644 --- a/plugins/logs/triggers.go +++ b/plugins/logs/triggers.go @@ -1,6 +1,7 @@ package logs import ( + "errors" "fmt" "io/ioutil" "os" @@ -56,6 +57,21 @@ func TriggerInstall() error { return nil } +// TriggerLogsGetProperty writes the logs key to stdout for a given app container +func TriggerLogsGetProperty(appName string, key string) error { + if key != "max-size" { + return errors.New("Invalid logs property specified") + } + + value := common.PropertyGet("logs", appName, "max-size") + if value == "" { + value = common.PropertyGetDefault("logs", "--global", "max-size", MaxSize) + } + + fmt.Println(value) + return nil +} + // TriggerPostDelete destroys the network property for a given app container func TriggerPostDelete(appName string) error { return common.PropertyDestroy("logs", appName)