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