func (container *Container) startLogging() error { cfg := container.getLogConfig() if cfg.Type == "none" { return nil // do not start logging routines } l, err := container.getLogger() if err != nil { return fmt.Errorf("Failed to initialize logging driver: %v", err) } copier, err := logger.NewCopier(container.ID, map[string]io.Reader{"stdout": container.StdoutPipe(), "stderr": container.StderrPipe()}, l) if err != nil { return err } container.logCopier = copier copier.Run() container.logDriver = l // set LogPath field only for json-file logdriver if jl, ok := l.(*jsonfilelog.JSONFileLogger); ok { container.LogPath = jl.LogPath() } return nil }
func (p *Pod) startLogging(daemon *Daemon) (err error) { err = nil if err = p.getLogger(daemon); err != nil { return } if p.spec.LogConfig.Type == "none" { return nil } for _, c := range p.status.Containers { var stdout, stderr io.Reader tag := "log-" + utils.RandStr(8, "alphanum") if stdout, stderr, err = p.vm.GetLogOutput(c.Id, tag, nil); err != nil { return } c.Logs.Copier = logger.NewCopier(c.Id, map[string]io.Reader{"stdout": stdout, "stderr": stderr}, c.Logs.Driver) c.Logs.Copier.Run() if jl, ok := c.Logs.Driver.(*jsonfilelog.JSONFileLogger); ok { c.Logs.LogPath = jl.LogPath() } } return nil }
func (container *Container) startLogging() error { cfg := container.hostConfig.LogConfig if cfg.Type == "" { cfg = container.daemon.defaultLogConfig } var l logger.Logger switch cfg.Type { case "json-file": pth, err := container.logPath("json") if err != nil { return err } dl, err := jsonfilelog.New(pth) if err != nil { return err } l = dl case "none": return nil default: return fmt.Errorf("Unknown logging driver: %s", cfg.Type) } copier, err := logger.NewCopier(container.ID, map[string]io.Reader{"stdout": container.StdoutPipe(), "stderr": container.StderrPipe()}, l) if err != nil { return err } container.logCopier = copier copier.Run() container.logDriver = l return nil }
// StartLogging initializes and starts the container logging stream. func (daemon *Daemon) StartLogging(container *container.Container) error { cfg := container.GetLogConfig(daemon.defaultLogConfig) if cfg.Type == "none" { return nil // do not start logging routines } if err := logger.ValidateLogOpts(cfg.Type, cfg.Config); err != nil { return err } l, err := container.StartLogger(cfg) if err != nil { return fmt.Errorf("Failed to initialize logging driver: %v", err) } copier := logger.NewCopier(container.ID, map[string]io.Reader{"stdout": container.StdoutPipe(), "stderr": container.StderrPipe()}, l) container.LogCopier = copier copier.Run() container.LogDriver = l // set LogPath field only for json-file logdriver if jl, ok := l.(*jsonfilelog.JSONFileLogger); ok { container.LogPath = jl.LogPath() } return nil }
func (c *Container) startLogging() { var err error c.initLogger() if c.logger.Driver == nil { return } var stdout, stderr io.Reader if stdout, stderr, err = c.p.sandbox.GetLogOutput(c.Id(), nil); err != nil { return } c.logger.Copier = logger.NewCopier(c.Id(), map[string]io.Reader{"stdout": stdout, "stderr": stderr}, c.logger.Driver) c.logger.Copier.Run() if jl, ok := c.logger.Driver.(*jsonfilelog.JSONFileLogger); ok { c.logger.LogPath = jl.LogPath() } return }