// New returns a new instance of the syslog logger // example: syslog.New("udp", "localhost:514", syslog.LOG_DEBUG, "", nil) // NOTE: tlsConfig param is optional and only applies when networks in "tcp+tls" // see TestSyslogTLS func tion int syslog_test.go for an example usage of tlsConfig parameter func New(network string, raddr string, tag string, tlsConfig *tls.Config) (*Syslog, error) { var err error s := &Syslog{ buffer: 3, numWorkers: 3, colors: defaultColors, displayColor: false, timestampFormat: log.DefaultTimeFormat, fileDisplay: log.Lshortfile, formatFunc: defaultFormatFunc, } // if non-TLS if tlsConfig == nil { s.writer, err = syslog.Dial(network, raddr, syslog.LOG_INFO, tag) } else { s.writer, err = syslog.DialWithTLSConfig(network, raddr, syslog.LOG_INFO, tag, tlsConfig) } if err != nil { return nil, err } return s, nil }
// New creates a syslog logger using the configuration passed in on // the context. Supported context configuration variables are // syslog-address, syslog-facility, syslog-format, syslog-tag. func New(ctx logger.Context) (logger.Logger, error) { tag, err := loggerutils.ParseLogTag(ctx, "{{.ID}}") if err != nil { return nil, err } proto, address, err := parseAddress(ctx.Config["syslog-address"]) if err != nil { return nil, err } facility, err := parseFacility(ctx.Config["syslog-facility"]) if err != nil { return nil, err } syslogFormatter, syslogFramer, err := parseLogFormat(ctx.Config["syslog-format"]) if err != nil { return nil, err } logTag := path.Base(os.Args[0]) + "/" + tag var log *syslog.Writer if proto == secureProto { tlsConfig, tlsErr := parseTLSConfig(ctx.Config) if tlsErr != nil { return nil, tlsErr } log, err = syslog.DialWithTLSConfig(proto, address, facility, logTag, tlsConfig) } else { log, err = syslog.Dial(proto, address, facility, logTag) } if err != nil { return nil, err } log.SetFormatter(syslogFormatter) log.SetFramer(syslogFramer) return &syslogger{ writer: log, }, nil }
// New creates a syslog logger using the configuration passed in on // the context. Supported context configuration variables are // syslog-address, syslog-facility, syslog-format. func New(info logger.Info) (logger.Logger, error) { tag, err := loggerutils.ParseLogTag(info, loggerutils.DefaultTemplate) if err != nil { return nil, err } proto, address, err := parseAddress(info.Config["syslog-address"]) if err != nil { return nil, err } facility, err := parseFacility(info.Config["syslog-facility"]) if err != nil { return nil, err } syslogFormatter, syslogFramer, err := parseLogFormat(info.Config["syslog-format"], proto) if err != nil { return nil, err } var log *syslog.Writer if proto == secureProto { tlsConfig, tlsErr := parseTLSConfig(info.Config) if tlsErr != nil { return nil, tlsErr } log, err = syslog.DialWithTLSConfig(proto, address, facility, tag, tlsConfig) } else { log, err = syslog.Dial(proto, address, facility, tag) } if err != nil { return nil, err } log.SetFormatter(syslogFormatter) log.SetFramer(syslogFramer) return &syslogger{ writer: log, }, nil }
// Initialize() expects a connection string in the following format: // (protocol):(hostname/IP):(port) // for example: tcp+tls:destination.server.example.com:512 func (o *SyslogOutput) Initialize(netConn string) error { o.Lock() defer o.Unlock() if o.connected { o.outputSocket.Close() } connSpecification := strings.SplitN(netConn, ":", 2) o.protocol = connSpecification[0] o.hostnamePort = connSpecification[1] var err error o.outputSocket, err = syslog.DialWithTLSConfig(o.protocol, o.hostnamePort, syslog.LOG_INFO, o.tag, config.TLSConfig) if err != nil { return errors.New(fmt.Sprintf("Error connecting to '%s': %s", netConn, err)) } o.markConnected() return nil }