github.com/mattyr/nomad@v0.3.3-0.20160919021406-3485a065154a/client/driver/logging/shuttler.go (about) 1 package logging 2 3 import ( 4 "io" 5 "log" 6 7 "github.com/hashicorp/nomad/nomad/structs" 8 "github.com/heroku/log-shuttle" 9 ) 10 11 type Shuttler struct { 12 logShuttler *shuttle.Shuttle 13 pr io.Reader 14 pw io.Writer 15 } 16 17 func NewShuttler(config *structs.LogShuttleConfig, logger *log.Logger) (*Shuttler, error) { 18 sConfig := getShuttleConfig(config) 19 sConfig.ComputeHeader() 20 logger.Printf("[DEBUG] log-shuttle config: %+v\n", sConfig) 21 s := shuttle.NewShuttle(sConfig) 22 23 pr, pw := io.Pipe() 24 s.Logger = logger 25 s.ErrLogger = logger 26 s.LoadReader(pr) 27 28 s.Launch() 29 30 // TODO: 31 //go LogFmtMetricsEmitter(s.MetricsRegistry, sConfig.StatsSource, sConfig.StatsInterval, logger) 32 33 return &Shuttler{logShuttler: s, pr: pr, pw: pw}, nil 34 } 35 36 func (s *Shuttler) Write(p []byte) (n int, err error) { 37 return s.pw.Write(p) 38 } 39 40 func (s *Shuttler) Shutdown() { 41 s.logShuttler.Land() 42 } 43 44 func getShuttleConfig(config *structs.LogShuttleConfig) shuttle.Config { 45 sConfig := shuttle.NewConfig() 46 sConfig.InputFormat = shuttle.InputFormatRaw 47 sConfig.UseGzip = config.UseGzip 48 sConfig.Drop = config.Drop 49 sConfig.Prival = shuttle.DefaultPriVal 50 sConfig.Version = shuttle.DefaultVersion 51 sConfig.Procid = config.Procid 52 sConfig.Appname = config.Appname 53 sConfig.Appname = config.LogplexToken 54 sConfig.Hostname = config.Hostname 55 sConfig.Msgid = shuttle.DefaultMsgID 56 sConfig.LogsURL = config.LogsURL 57 sConfig.StatsSource = config.StatsSource 58 sConfig.StatsInterval = config.StatsInterval 59 sConfig.WaitDuration = shuttle.DefaultWaitDuration 60 sConfig.Timeout = shuttle.DefaultTimeout 61 sConfig.MaxAttempts = config.MaxAttempts 62 sConfig.NumOutlets = config.NumOutlets 63 sConfig.BatchSize = config.BatchSize 64 sConfig.BackBuff = config.BackBuff 65 sConfig.MaxLineLength = config.MaxLineLength 66 sConfig.KinesisShards = config.KinesisShards 67 return sConfig 68 }