Add an option to log into a file rather than stdout (#1168)
Use Logfile option in the `[general]` section
This commit is contained in:
parent
a94fe55886
commit
213bf349c3
|
@ -3,6 +3,7 @@ package config
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -93,6 +94,7 @@ type Protocol struct {
|
||||||
JoinDelay string // all protocols
|
JoinDelay string // all protocols
|
||||||
Label string // all protocols
|
Label string // all protocols
|
||||||
Login string // mattermost, matrix
|
Login string // mattermost, matrix
|
||||||
|
LogFile string // general
|
||||||
MediaDownloadBlackList []string
|
MediaDownloadBlackList []string
|
||||||
MediaDownloadPath string // Basically MediaServerUpload, but instead of uploading it, just write it to a file on the same server.
|
MediaDownloadPath string // Basically MediaServerUpload, but instead of uploading it, just write it to a file on the same server.
|
||||||
MediaDownloadSize int // all protocols
|
MediaDownloadSize int // all protocols
|
||||||
|
@ -247,6 +249,15 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {
|
||||||
|
|
||||||
cfgtype := detectConfigType(cfgfile)
|
cfgtype := detectConfigType(cfgfile)
|
||||||
mycfg := newConfigFromString(logger, input, cfgtype)
|
mycfg := newConfigFromString(logger, input, cfgtype)
|
||||||
|
if mycfg.cv.General.LogFile != "" {
|
||||||
|
logfile, err := os.OpenFile(mycfg.cv.General.LogFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
||||||
|
if err == nil {
|
||||||
|
logger.Info("Opening log file ", mycfg.cv.General.LogFile)
|
||||||
|
rootLogger.Out = logfile
|
||||||
|
} else {
|
||||||
|
logger.Warn("Failed to open ", mycfg.cv.General.LogFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
if mycfg.cv.General.MediaDownloadSize == 0 {
|
if mycfg.cv.General.MediaDownloadSize == 0 {
|
||||||
mycfg.cv.General.MediaDownloadSize = 1000000
|
mycfg.cv.General.MediaDownloadSize = 1000000
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,15 @@ func main() {
|
||||||
cfg := config.NewConfig(rootLogger, *flagConfig)
|
cfg := config.NewConfig(rootLogger, *flagConfig)
|
||||||
cfg.BridgeValues().General.Debug = *flagDebug
|
cfg.BridgeValues().General.Debug = *flagDebug
|
||||||
|
|
||||||
|
// if logging to a file, ensure it is closed when the program terminates
|
||||||
|
// nolint:errcheck
|
||||||
|
defer func() {
|
||||||
|
if f, ok := rootLogger.Out.(*os.File); ok {
|
||||||
|
f.Sync()
|
||||||
|
f.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
r, err := gateway.NewRouter(rootLogger, cfg, bridgemap.FullMap)
|
r, err := gateway.NewRouter(rootLogger, cfg, bridgemap.FullMap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatalf("Starting gateway failed: %s", err)
|
logger.Fatalf("Starting gateway failed: %s", err)
|
||||||
|
|
|
@ -1604,6 +1604,14 @@ MediaDownloadBlacklist=[".html$",".htm$"]
|
||||||
#OPTIONAL (default false)
|
#OPTIONAL (default false)
|
||||||
IgnoreFailureOnStart=false
|
IgnoreFailureOnStart=false
|
||||||
|
|
||||||
|
#LogFile defines the location of a file to write logs into, rather
|
||||||
|
#than stdout.
|
||||||
|
#Logging will still happen on stdout if the file cannot be open for
|
||||||
|
#writing, or if the value is empty. Note that the log won't roll, so
|
||||||
|
#you might want to use logrotate(8) with this feature.
|
||||||
|
#OPTIONAL (default empty)
|
||||||
|
LogFile=/var/log/matterbridge.log
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
#Tengo configuration
|
#Tengo configuration
|
||||||
###################################################################
|
###################################################################
|
||||||
|
|
Loading…
Reference in New Issue