add global log to file
This commit is contained in:
parent
5e5b54bab9
commit
a858fa649a
|
@ -16,6 +16,7 @@ type NotifyConfig struct {
|
||||||
JID string `toml:"jid"`
|
JID string `toml:"jid"`
|
||||||
Password string `toml:"password"`
|
Password string `toml:"password"`
|
||||||
} `toml:"xmpp"`
|
} `toml:"xmpp"`
|
||||||
|
File string `toml:"file"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReceiveConfig struct {
|
type ReceiveConfig struct {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package all
|
package all
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
_ "dev.sum7.eu/genofire/logmania/notify/file"
|
||||||
_ "dev.sum7.eu/genofire/logmania/notify/xmpp"
|
_ "dev.sum7.eu/genofire/logmania/notify/xmpp"
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
package xmpp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"dev.sum7.eu/genofire/logmania/bot"
|
||||||
|
"dev.sum7.eu/genofire/logmania/database"
|
||||||
|
"dev.sum7.eu/genofire/logmania/lib"
|
||||||
|
"dev.sum7.eu/genofire/logmania/notify"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
proto = "file:"
|
||||||
|
)
|
||||||
|
|
||||||
|
var logger = log.WithField("notify", proto)
|
||||||
|
|
||||||
|
type Notifier struct {
|
||||||
|
notify.Notifier
|
||||||
|
formatter log.Formatter
|
||||||
|
file *os.File
|
||||||
|
path string
|
||||||
|
}
|
||||||
|
|
||||||
|
func Init(config *lib.NotifyConfig, db *database.DB, bot *bot.Bot) notify.Notifier {
|
||||||
|
logger.Info("startup")
|
||||||
|
if config.File == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
file, err := os.OpenFile(config.File, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("could not open file: %s", err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Notifier{
|
||||||
|
formatter: &log.JSONFormatter{},
|
||||||
|
file: file,
|
||||||
|
path: config.File,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *Notifier) Send(e *log.Entry) error {
|
||||||
|
text, err := n.formatter.Format(e)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = n.file.Write(text)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warnf("could not write to logfile: %s - try to reopen it", err.Error())
|
||||||
|
file, err := os.OpenFile(n.path, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
n.file = file
|
||||||
|
_, err = n.file.Write(text)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
notify.AddNotifier(Init)
|
||||||
|
}
|
|
@ -28,7 +28,7 @@ type Notifier struct {
|
||||||
client *xmpp_client.Client
|
client *xmpp_client.Client
|
||||||
channels map[string]bool
|
channels map[string]bool
|
||||||
db *database.DB
|
db *database.DB
|
||||||
formatter *log.TextFormatter
|
formatter log.Formatter
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init(config *lib.NotifyConfig, db *database.DB, bot *bot.Bot) notify.Notifier {
|
func Init(config *lib.NotifyConfig, db *database.DB, bot *bot.Bot) notify.Notifier {
|
||||||
|
|
Loading…
Reference in New Issue