1package logger // import "github.com/docker/docker/daemon/logger" 2 3import ( 4 "errors" 5 "io" 6) 7 8type client interface { 9 Call(string, interface{}, interface{}) error 10 Stream(string, interface{}) (io.ReadCloser, error) 11} 12 13type logPluginProxy struct { 14 client 15} 16 17type logPluginProxyStartLoggingRequest struct { 18 File string 19 Info Info 20} 21 22type logPluginProxyStartLoggingResponse struct { 23 Err string 24} 25 26func (pp *logPluginProxy) StartLogging(file string, info Info) (err error) { 27 var ( 28 req logPluginProxyStartLoggingRequest 29 ret logPluginProxyStartLoggingResponse 30 ) 31 32 req.File = file 33 req.Info = info 34 if err = pp.Call("LogDriver.StartLogging", req, &ret); err != nil { 35 return 36 } 37 38 if ret.Err != "" { 39 err = errors.New(ret.Err) 40 } 41 42 return 43} 44 45type logPluginProxyStopLoggingRequest struct { 46 File string 47} 48 49type logPluginProxyStopLoggingResponse struct { 50 Err string 51} 52 53func (pp *logPluginProxy) StopLogging(file string) (err error) { 54 var ( 55 req logPluginProxyStopLoggingRequest 56 ret logPluginProxyStopLoggingResponse 57 ) 58 59 req.File = file 60 if err = pp.Call("LogDriver.StopLogging", req, &ret); err != nil { 61 return 62 } 63 64 if ret.Err != "" { 65 err = errors.New(ret.Err) 66 } 67 68 return 69} 70 71type logPluginProxyCapabilitiesResponse struct { 72 Cap Capability 73 Err string 74} 75 76func (pp *logPluginProxy) Capabilities() (cap Capability, err error) { 77 var ( 78 ret logPluginProxyCapabilitiesResponse 79 ) 80 81 if err = pp.Call("LogDriver.Capabilities", nil, &ret); err != nil { 82 return 83 } 84 85 cap = ret.Cap 86 87 if ret.Err != "" { 88 err = errors.New(ret.Err) 89 } 90 91 return 92} 93 94type logPluginProxyReadLogsRequest struct { 95 Info Info 96 Config ReadConfig 97} 98 99func (pp *logPluginProxy) ReadLogs(info Info, config ReadConfig) (stream io.ReadCloser, err error) { 100 var ( 101 req logPluginProxyReadLogsRequest 102 ) 103 104 req.Info = info 105 req.Config = config 106 return pp.Stream("LogDriver.ReadLogs", req) 107} 108