func (s *Server) Start() error { if err := s.config.Validate(); err != nil { return err } if !s.config.NoDetach { utils.Daemonize(s.config.DebugLogFile, s.config.PidFile) } loggo.ConfigureLoggers(s.config.LogLevels) raddr := net.JoinHostPort(s.config.Destination.Host, strconv.Itoa(s.config.Destination.Port)) log.Infof("Connecting to %s over %s", raddr, s.config.Destination.Protocol) var err error s.logger, err = syslog.Dial( s.config.Hostname, s.config.Destination.Protocol, raddr, s.config.RootCAs, s.config.ConnectTimeout, s.config.WriteTimeout, s.config.TcpMaxLineLength, ) if err != nil { log.Errorf("Initial connection to server failed: %v - connection will be retried", err) } go s.tailFiles() for err = range s.logger.Errors { log.Errorf("Syslog error: %v", err) } return nil }
func main() { cm := NewConfigManager() if cm.Daemonize() { utils.Daemonize(cm.DebugLogFile(), cm.PidFile()) } utils.AddSignalHandlers() loggo.ConfigureLoggers(cm.LogLevels()) raddr := net.JoinHostPort(cm.DestHost(), strconv.Itoa(cm.DestPort())) log.Infof("Connecting to %s over %s", raddr, cm.DestProtocol()) logger, err := syslog.Dial(cm.Hostname(), cm.DestProtocol(), raddr, cm.RootCAs(), cm.ConnectTimeout(), cm.WriteTimeout()) if err != nil { log.Errorf("Cannot connect to server: %v", err) } go tailFiles(cm.Files(), cm.ExcludeFiles(), cm.ExcludePatterns(), cm.RefreshInterval(), logger, cm.Severity(), cm.Facility(), cm.Poll()) for err = range logger.Errors { log.Errorf("Syslog error: %v", err) } }