enhance systemd integration

* log level identification
* manual activation with flag
* automatic systemd launch detection
This commit is contained in:
Hekmon 2020-09-18 17:37:54 +02:00 committed by Nick Craig-Wood
parent 3edc9ff0b0
commit c58023a9ba
8 changed files with 59 additions and 19 deletions

View file

@ -21,6 +21,7 @@ import (
"sync"
"time"
systemd "github.com/iguanesolutions/go-systemd/v5"
"github.com/pkg/errors"
"github.com/rclone/rclone/fs"
"github.com/rclone/rclone/fs/accounting"
@ -364,6 +365,12 @@ func StartStats() func() {
// initConfig is run by cobra after initialising the flags
func initConfig() {
// Activate logger systemd support if systemd invocation ID is detected
_, sysdLaunch := systemd.GetInvocationID()
if sysdLaunch {
fs.Config.LogSystemdSupport = true // used during fslog.InitLogging()
}
// Start the logger
fslog.InitLogging()
@ -379,6 +386,13 @@ func initConfig() {
// Write the args for debug purposes
fs.Debugf("rclone", "Version %q starting with parameters %q", fs.Version, os.Args)
// Inform user about systemd log support now that we have a logger
if sysdLaunch {
fs.Debugf("rclone", "systemd logging support automatically activated")
} else if fs.Config.LogSystemdSupport {
fs.Debugf("rclone", "systemd logging support manually activated")
}
// Start the remote control server if configured
_, err = rcserver.Start(&rcflags.Opt)
if err != nil {