mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
Implement events logging feature
Record events (i.e. pluginhook's calls) as syslog entries and provide a shortcut command to display the last part of the log file. A brief summary of the changes follows: dokku: - New DOKKU_EVENTS_LOGFILE envvar to hold logfile location. plugins/20_events/commands: - events output log entries, a tail's follow-like mode is provided too. - events:[on|off] enables/disables logging. - events:list lists events that are logged. plugins/20_events/hook: - Generic hook that writes log entries. All the events are registered via symlink to this script. plugins/common/functions: - dokku_log_event() writes log entries via logger. - dokku_log_pluginhook_call() formats log entries and writes them via dokku_log_event().
This commit is contained in:
2
dokku
2
dokku
@@ -10,6 +10,8 @@ export PLUGIN_PATH=${PLUGIN_PATH:="/var/lib/dokku/plugins"}
|
||||
export DOKKU_NOT_IMPLEMENTED_EXIT=10
|
||||
export DOKKU_VALID_EXIT=0
|
||||
|
||||
export DOKKU_EVENTS_LOGFILE=${DOKKU_EVENTS_LOGFILE:="/var/log/dokku.log"}
|
||||
|
||||
source "$PLUGIN_PATH/common/functions"
|
||||
|
||||
[[ -f $DOKKU_ROOT/dokkurc ]] && source $DOKKU_ROOT/dokkurc
|
||||
|
||||
1
plugins/20_events/backup-check
Symbolic link
1
plugins/20_events/backup-check
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/backup-export
Symbolic link
1
plugins/20_events/backup-export
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/backup-import
Symbolic link
1
plugins/20_events/backup-import
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/bind-external-ip
Symbolic link
1
plugins/20_events/bind-external-ip
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/check-deploy
Symbolic link
1
plugins/20_events/check-deploy
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
54
plugins/20_events/commands
Executable file
54
plugins/20_events/commands
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$(dirname $0)/../common/functions"
|
||||
|
||||
find "$l_plugin_dir" -type l -printf "%f " | sort
|
||||
|
||||
case "$1" in
|
||||
events)
|
||||
if [[ -f $DOKKU_EVENTS_LOGFILE ]] ; then
|
||||
if [[ $2 == "-t" ]]; then
|
||||
tail -f $DOKKU_EVENTS_LOGFILE
|
||||
else
|
||||
tail -n 100 $DOKKU_EVENTS_LOGFILE
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
events:on)
|
||||
echo "Enabling dokku events logger"
|
||||
[[ -d $DOKKU_ROOT/.dokkurc ]] || mkdir -p $DOKKU_ROOT/.dokkurc
|
||||
echo "export DOKKU_EVENTS=1" > $DOKKU_ROOT/.dokkurc/DOKKU_EVENTS
|
||||
;;
|
||||
|
||||
events:off)
|
||||
echo "Disabling dokku events logger"
|
||||
rm -f $DOKKU_ROOT/.dokkurc/DOKKU_EVENTS
|
||||
;;
|
||||
|
||||
events:list)
|
||||
if [[ "$DOKKU_EVENTS" ]]; then
|
||||
dokku_col_log_info2_quiet "Events currently logged"
|
||||
for hook in $(find $(dirname $0) -type l -printf "%f " | sort) ; do
|
||||
dokku_col_log_msg "$hook"
|
||||
done
|
||||
else
|
||||
dokku_log_warn "Events logger disabled"
|
||||
fi
|
||||
;;
|
||||
|
||||
help | events:help)
|
||||
cat && cat<<EOF
|
||||
events [-t] Show the last events (-t follows)
|
||||
events:list List logged events
|
||||
events:on Enable events logger
|
||||
events:off Disable events logger
|
||||
EOF
|
||||
;;
|
||||
|
||||
*)
|
||||
exit $DOKKU_NOT_IMPLEMENTED_EXIT
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
1
plugins/20_events/dependencies
Symbolic link
1
plugins/20_events/dependencies
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/docker-args-build
Symbolic link
1
plugins/20_events/docker-args-build
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/docker-args-deploy
Symbolic link
1
plugins/20_events/docker-args-deploy
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/docker-args-run
Symbolic link
1
plugins/20_events/docker-args-run
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/git-post-pull
Symbolic link
1
plugins/20_events/git-post-pull
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/git-pre-pull
Symbolic link
1
plugins/20_events/git-pre-pull
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
5
plugins/20_events/hook
Executable file
5
plugins/20_events/hook
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$(dirname $0)/../common/functions"
|
||||
|
||||
[[ ! "$DOKKU_EVENTS" ]] || dokku_log_pluginhook_call "$(basename $0)" $@
|
||||
20
plugins/20_events/install
Executable file
20
plugins/20_events/install
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$(dirname $0)/../common/functions"
|
||||
|
||||
if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then
|
||||
touch "$DOKKU_EVENTS_LOGFILE"
|
||||
# chown syslog:root might not work on SUSE
|
||||
chown syslog:dokku "$DOKKU_EVENTS_LOGFILE"
|
||||
chmod 664 "$DOKKU_EVENTS_LOGFILE"
|
||||
fi
|
||||
|
||||
if [[ ! -f "$DOKKU_RSYSLOG_FILTER" ]]; then
|
||||
cat >"$DOKKU_RSYSLOG_FILTER" <<EOF
|
||||
:syslogtag, contains, "dokku" $DOKKU_EVENTS_LOGFILE
|
||||
EOF
|
||||
service rsyslog reload
|
||||
|
||||
[[ "$DOKKU_EVENTS" ]] && dokku_log_pluginhook_call "$(basename $0)" $@
|
||||
|
||||
exit 0
|
||||
1
plugins/20_events/nginx-hostname
Symbolic link
1
plugins/20_events/nginx-hostname
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/nginx-pre-reload
Symbolic link
1
plugins/20_events/nginx-pre-reload
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-build-buildstep
Symbolic link
1
plugins/20_events/post-build-buildstep
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-build-dockerfile
Symbolic link
1
plugins/20_events/post-build-dockerfile
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-delete
Symbolic link
1
plugins/20_events/post-delete
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-deploy
Symbolic link
1
plugins/20_events/post-deploy
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-domains-update
Symbolic link
1
plugins/20_events/post-domains-update
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-release-buildstep
Symbolic link
1
plugins/20_events/post-release-buildstep
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/post-release-dockerfile
Symbolic link
1
plugins/20_events/post-release-dockerfile
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-build-buildstep
Symbolic link
1
plugins/20_events/pre-build-buildstep
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-build-dockerfile
Symbolic link
1
plugins/20_events/pre-build-dockerfile
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-delete
Symbolic link
1
plugins/20_events/pre-delete
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-deploy
Symbolic link
1
plugins/20_events/pre-deploy
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-release-buildstep
Symbolic link
1
plugins/20_events/pre-release-buildstep
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/pre-release-dockerfile
Symbolic link
1
plugins/20_events/pre-release-dockerfile
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/receive-app
Symbolic link
1
plugins/20_events/receive-app
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
1
plugins/20_events/update
Symbolic link
1
plugins/20_events/update
Symbolic link
@@ -0,0 +1 @@
|
||||
hook
|
||||
@@ -90,6 +90,17 @@ dokku_log_fail() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
dokku_log_event() {
|
||||
logger -t dokku -i -- $@
|
||||
}
|
||||
|
||||
dokku_log_pluginhook_call() {
|
||||
local l_hook
|
||||
|
||||
l_hook="$1" ; shift
|
||||
dokku_log_event "INVOKED: ${l_hook}( $@ )"
|
||||
}
|
||||
|
||||
dokku_container_log_verbose_quiet() {
|
||||
CID=$1;
|
||||
shift
|
||||
|
||||
Reference in New Issue
Block a user