// StatsAndLogging constructs a Statter and and AuditLogger based on its config // parameters, and return them both. Crashes if any setup fails. // Also sets the constructed AuditLogger as the default logger. func StatsAndLogging(statConf StatsdConfig, logConf SyslogConfig) (statsd.Statter, *blog.AuditLogger) { stats, err := statsd.NewClient(statConf.Server, statConf.Prefix) FailOnError(err, "Couldn't connect to statsd") tag := path.Base(os.Args[0]) syslogger, err := syslog.Dial( logConf.Network, logConf.Server, syslog.LOG_INFO|syslog.LOG_LOCAL0, // default, overridden by log calls tag) FailOnError(err, "Could not connect to Syslog") level := int(syslog.LOG_DEBUG) if logConf.StdoutLevel != nil { level = *logConf.StdoutLevel } auditlogger, err := blog.NewAuditLogger(syslogger, stats, level) FailOnError(err, "Could not connect to Syslog") // TODO(https://github.com/cloudflare/cfssl/issues/426): // CFSSL's log facility always prints to stdout. Ideally we should send a // patch that would allow us to have CFSSL use our log facility. In the // meantime, inhibit debug and info-level logs from CFSSL. cfsslLog.Level = cfsslLog.LevelWarning blog.SetAuditLogger(auditlogger) return stats, auditlogger }
// StatsAndLogging constructs a Statter and and AuditLogger based on its config // parameters, and return them both. Crashes if any setup fails. // Also sets the constructed AuditLogger as the default logger. func StatsAndLogging(statConf StatsdConfig, logConf SyslogConfig) (statsd.Statter, *blog.AuditLogger) { stats, err := statsd.NewClient(statConf.Server, statConf.Prefix) FailOnError(err, "Couldn't connect to statsd") tag := path.Base(os.Args[0]) syslogger, err := syslog.Dial( logConf.Network, logConf.Server, syslog.LOG_INFO|syslog.LOG_LOCAL0, // default, overridden by log calls tag) FailOnError(err, "Could not connect to Syslog") level := int(syslog.LOG_DEBUG) if logConf.StdoutLevel != nil { level = *logConf.StdoutLevel } auditlogger, err := blog.NewAuditLogger(syslogger, stats, level) FailOnError(err, "Could not connect to Syslog") blog.SetAuditLogger(auditlogger) return stats, auditlogger }