package logger // import "github.com/docker/docker/daemon/logger" import ( "errors" "io" ) type client interface { Call(string, interface{}, interface{}) error Stream(string, interface{}) (io.ReadCloser, error) } type logPluginProxy struct { client } type logPluginProxyStartLoggingRequest struct { File string Info Info } type logPluginProxyStartLoggingResponse struct { Err string } func (pp *logPluginProxy) StartLogging(file string, info Info) (err error) { var ( req logPluginProxyStartLoggingRequest ret logPluginProxyStartLoggingResponse ) req.File = file req.Info = info if err = pp.Call("LogDriver.StartLogging", req, &ret); err != nil { return } if ret.Err != "" { err = errors.New(ret.Err) } return } type logPluginProxyStopLoggingRequest struct { File string } type logPluginProxyStopLoggingResponse struct { Err string } func (pp *logPluginProxy) StopLogging(file string) (err error) { var ( req logPluginProxyStopLoggingRequest ret logPluginProxyStopLoggingResponse ) req.File = file if err = pp.Call("LogDriver.StopLogging", req, &ret); err != nil { return } if ret.Err != "" { err = errors.New(ret.Err) } return } type logPluginProxyCapabilitiesResponse struct { Cap Capability Err string } func (pp *logPluginProxy) Capabilities() (cap Capability, err error) { var ( ret logPluginProxyCapabilitiesResponse ) if err = pp.Call("LogDriver.Capabilities", nil, &ret); err != nil { return } cap = ret.Cap if ret.Err != "" { err = errors.New(ret.Err) } return } type logPluginProxyReadLogsRequest struct { Info Info Config ReadConfig } func (pp *logPluginProxy) ReadLogs(info Info, config ReadConfig) (stream io.ReadCloser, err error) { var ( req logPluginProxyReadLogsRequest ) req.Info = info req.Config = config return pp.Stream("LogDriver.ReadLogs", req) }