Browse code

Extract log utils into pkg/log

Docker-DCO-1.1-Signed-off-by: Josiah Kiehl <josiah@capoferro.net> (github: capoferro)

Josiah Kiehl authored on 2014/07/25 05:37:44
Showing 44 changed files
... ...
@@ -28,6 +28,7 @@ import (
28 28
 	"github.com/docker/docker/engine"
29 29
 	"github.com/docker/docker/nat"
30 30
 	"github.com/docker/docker/opts"
31
+	"github.com/docker/docker/pkg/log"
31 32
 	"github.com/docker/docker/pkg/parsers"
32 33
 	"github.com/docker/docker/pkg/parsers/filters"
33 34
 	"github.com/docker/docker/pkg/signal"
... ...
@@ -433,11 +434,11 @@ func (cli *DockerCli) CmdVersion(args ...string) error {
433 433
 	out := engine.NewOutput()
434 434
 	remoteVersion, err := out.AddEnv()
435 435
 	if err != nil {
436
-		utils.Errorf("Error reading remote version: %s\n", err)
436
+		log.Errorf("Error reading remote version: %s\n", err)
437 437
 		return err
438 438
 	}
439 439
 	if _, err := out.Write(body); err != nil {
440
-		utils.Errorf("Error reading remote version: %s\n", err)
440
+		log.Errorf("Error reading remote version: %s\n", err)
441 441
 		return err
442 442
 	}
443 443
 	out.Close()
... ...
@@ -473,7 +474,7 @@ func (cli *DockerCli) CmdInfo(args ...string) error {
473 473
 	}
474 474
 
475 475
 	if _, err := out.Write(body); err != nil {
476
-		utils.Errorf("Error reading remote info: %s\n", err)
476
+		log.Errorf("Error reading remote info: %s\n", err)
477 477
 		return err
478 478
 	}
479 479
 	out.Close()
... ...
@@ -597,10 +598,10 @@ func (cli *DockerCli) forwardAllSignals(cid string) chan os.Signal {
597 597
 				}
598 598
 			}
599 599
 			if sig == "" {
600
-				utils.Errorf("Unsupported signal: %d. Discarding.", s)
600
+				log.Errorf("Unsupported signal: %d. Discarding.", s)
601 601
 			}
602 602
 			if _, _, err := readBody(cli.call("POST", fmt.Sprintf("/containers/%s/kill?signal=%s", cid, sig), nil, false)); err != nil {
603
-				utils.Debugf("Error sending signal: %s", err)
603
+				log.Debugf("Error sending signal: %s", err)
604 604
 			}
605 605
 		}
606 606
 	}()
... ...
@@ -690,7 +691,7 @@ func (cli *DockerCli) CmdStart(args ...string) error {
690 690
 	if *openStdin || *attach {
691 691
 		if tty && cli.isTerminal {
692 692
 			if err := cli.monitorTtySize(cmd.Arg(0)); err != nil {
693
-				utils.Errorf("Error monitoring TTY size: %s\n", err)
693
+				log.Errorf("Error monitoring TTY size: %s\n", err)
694 694
 			}
695 695
 		}
696 696
 		return <-cErr
... ...
@@ -1827,7 +1828,7 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
1827 1827
 
1828 1828
 	if tty && cli.isTerminal {
1829 1829
 		if err := cli.monitorTtySize(cmd.Arg(0)); err != nil {
1830
-			utils.Debugf("Error monitoring TTY size: %s", err)
1830
+			log.Debugf("Error monitoring TTY size: %s", err)
1831 1831
 		}
1832 1832
 	}
1833 1833
 
... ...
@@ -2098,9 +2099,9 @@ func (cli *DockerCli) CmdRun(args ...string) error {
2098 2098
 
2099 2099
 	// Block the return until the chan gets closed
2100 2100
 	defer func() {
2101
-		utils.Debugf("End of CmdRun(), Waiting for hijack to finish.")
2101
+		log.Debugf("End of CmdRun(), Waiting for hijack to finish.")
2102 2102
 		if _, ok := <-hijacked; ok {
2103
-			utils.Errorf("Hijack did not finish (chan still open)")
2103
+			log.Errorf("Hijack did not finish (chan still open)")
2104 2104
 		}
2105 2105
 	}()
2106 2106
 
... ...
@@ -2146,7 +2147,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
2146 2146
 		}
2147 2147
 	case err := <-errCh:
2148 2148
 		if err != nil {
2149
-			utils.Debugf("Error hijack: %s", err)
2149
+			log.Debugf("Error hijack: %s", err)
2150 2150
 			return err
2151 2151
 		}
2152 2152
 	}
... ...
@@ -2158,13 +2159,13 @@ func (cli *DockerCli) CmdRun(args ...string) error {
2158 2158
 
2159 2159
 	if (config.AttachStdin || config.AttachStdout || config.AttachStderr) && config.Tty && cli.isTerminal {
2160 2160
 		if err := cli.monitorTtySize(runResult.Get("Id")); err != nil {
2161
-			utils.Errorf("Error monitoring TTY size: %s\n", err)
2161
+			log.Errorf("Error monitoring TTY size: %s\n", err)
2162 2162
 		}
2163 2163
 	}
2164 2164
 
2165 2165
 	if errCh != nil {
2166 2166
 		if err := <-errCh; err != nil {
2167
-			utils.Debugf("Error hijack: %s", err)
2167
+			log.Debugf("Error hijack: %s", err)
2168 2168
 			return err
2169 2169
 		}
2170 2170
 	}
... ...
@@ -13,6 +13,7 @@ import (
13 13
 
14 14
 	"github.com/docker/docker/api"
15 15
 	"github.com/docker/docker/dockerversion"
16
+	"github.com/docker/docker/pkg/log"
16 17
 	"github.com/docker/docker/pkg/term"
17 18
 	"github.com/docker/docker/utils"
18 19
 )
... ...
@@ -93,7 +94,7 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in io.Rea
93 93
 			} else {
94 94
 				_, err = utils.StdCopy(stdout, stderr, br)
95 95
 			}
96
-			utils.Debugf("[hijack] End of stdout")
96
+			log.Debugf("[hijack] End of stdout")
97 97
 			return err
98 98
 		})
99 99
 	}
... ...
@@ -101,15 +102,15 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in io.Rea
101 101
 	sendStdin := utils.Go(func() error {
102 102
 		if in != nil {
103 103
 			io.Copy(rwc, in)
104
-			utils.Debugf("[hijack] End of stdin")
104
+			log.Debugf("[hijack] End of stdin")
105 105
 		}
106 106
 		if tcpc, ok := rwc.(*net.TCPConn); ok {
107 107
 			if err := tcpc.CloseWrite(); err != nil {
108
-				utils.Debugf("Couldn't send EOF: %s\n", err)
108
+				log.Debugf("Couldn't send EOF: %s\n", err)
109 109
 			}
110 110
 		} else if unixc, ok := rwc.(*net.UnixConn); ok {
111 111
 			if err := unixc.CloseWrite(); err != nil {
112
-				utils.Debugf("Couldn't send EOF: %s\n", err)
112
+				log.Debugf("Couldn't send EOF: %s\n", err)
113 113
 			}
114 114
 		}
115 115
 		// Discard errors due to pipe interruption
... ...
@@ -118,14 +119,14 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in io.Rea
118 118
 
119 119
 	if stdout != nil || stderr != nil {
120 120
 		if err := <-receiveStdout; err != nil {
121
-			utils.Debugf("Error receiveStdout: %s", err)
121
+			log.Debugf("Error receiveStdout: %s", err)
122 122
 			return err
123 123
 		}
124 124
 	}
125 125
 
126 126
 	if !cli.isTerminal {
127 127
 		if err := <-sendStdin; err != nil {
128
-			utils.Debugf("Error sendStdin: %s", err)
128
+			log.Debugf("Error sendStdin: %s", err)
129 129
 			return err
130 130
 		}
131 131
 	}
... ...
@@ -20,6 +20,7 @@ import (
20 20
 	"github.com/docker/docker/api"
21 21
 	"github.com/docker/docker/dockerversion"
22 22
 	"github.com/docker/docker/engine"
23
+	"github.com/docker/docker/pkg/log"
23 24
 	"github.com/docker/docker/pkg/term"
24 25
 	"github.com/docker/docker/registry"
25 26
 	"github.com/docker/docker/utils"
... ...
@@ -165,7 +166,7 @@ func (cli *DockerCli) streamHelper(method, path string, setRawTerminal bool, in
165 165
 		} else {
166 166
 			_, err = utils.StdCopy(stdout, stderr, resp.Body)
167 167
 		}
168
-		utils.Debugf("[stream] End of stdout")
168
+		log.Debugf("[stream] End of stdout")
169 169
 		return err
170 170
 	}
171 171
 	return nil
... ...
@@ -180,7 +181,7 @@ func (cli *DockerCli) resizeTty(id string) {
180 180
 	v.Set("h", strconv.Itoa(height))
181 181
 	v.Set("w", strconv.Itoa(width))
182 182
 	if _, _, err := readBody(cli.call("POST", "/containers/"+id+"/resize?"+v.Encode(), nil, false)); err != nil {
183
-		utils.Debugf("Error resize: %s", err)
183
+		log.Debugf("Error resize: %s", err)
184 184
 	}
185 185
 }
186 186
 
... ...
@@ -237,7 +238,7 @@ func (cli *DockerCli) getTtySize() (int, int) {
237 237
 	}
238 238
 	ws, err := term.GetWinsize(cli.terminalFd)
239 239
 	if err != nil {
240
-		utils.Debugf("Error getting size: %s", err)
240
+		log.Debugf("Error getting size: %s", err)
241 241
 		if ws == nil {
242 242
 			return 0, 0
243 243
 		}
... ...
@@ -6,9 +6,9 @@ import (
6 6
 	"strings"
7 7
 
8 8
 	"github.com/docker/docker/engine"
9
+	"github.com/docker/docker/pkg/log"
9 10
 	"github.com/docker/docker/pkg/parsers"
10 11
 	"github.com/docker/docker/pkg/version"
11
-	"github.com/docker/docker/utils"
12 12
 )
13 13
 
14 14
 const (
... ...
@@ -43,7 +43,7 @@ func DisplayablePorts(ports *engine.Table) string {
43 43
 func MatchesContentType(contentType, expectedType string) bool {
44 44
 	mimetype, _, err := mime.ParseMediaType(contentType)
45 45
 	if err != nil {
46
-		utils.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
46
+		log.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
47 47
 	}
48 48
 	return err == nil && mimetype == expectedType
49 49
 }
... ...
@@ -11,7 +11,6 @@ import (
11 11
 	"fmt"
12 12
 	"io"
13 13
 	"io/ioutil"
14
-	"log"
15 14
 	"net"
16 15
 	"net/http"
17 16
 	"net/http/pprof"
... ...
@@ -21,17 +20,18 @@ import (
21 21
 	"syscall"
22 22
 
23 23
 	"code.google.com/p/go.net/websocket"
24
+	"github.com/docker/libcontainer/user"
25
+	"github.com/gorilla/mux"
24 26
 
25 27
 	"github.com/docker/docker/api"
26 28
 	"github.com/docker/docker/engine"
27 29
 	"github.com/docker/docker/pkg/listenbuffer"
30
+	"github.com/docker/docker/pkg/log"
28 31
 	"github.com/docker/docker/pkg/parsers"
29 32
 	"github.com/docker/docker/pkg/systemd"
30 33
 	"github.com/docker/docker/pkg/version"
31 34
 	"github.com/docker/docker/registry"
32 35
 	"github.com/docker/docker/utils"
33
-	"github.com/docker/libcontainer/user"
34
-	"github.com/gorilla/mux"
35 36
 )
36 37
 
37 38
 var (
... ...
@@ -88,7 +88,7 @@ func httpError(w http.ResponseWriter, err error) {
88 88
 	}
89 89
 
90 90
 	if err != nil {
91
-		utils.Errorf("HTTP Error: statusCode=%d %s", statusCode, err.Error())
91
+		log.Errorf("HTTP Error: statusCode=%d %s", statusCode, err.Error())
92 92
 		http.Error(w, err.Error(), statusCode)
93 93
 	}
94 94
 }
... ...
@@ -439,7 +439,7 @@ func postCommit(eng *engine.Engine, version version.Version, w http.ResponseWrit
439 439
 		stdoutBuffer = bytes.NewBuffer(nil)
440 440
 	)
441 441
 	if err := config.Decode(r.Body); err != nil {
442
-		utils.Errorf("%s", err)
442
+		log.Errorf("%s", err)
443 443
 	}
444 444
 
445 445
 	if r.FormValue("pause") == "" && version.GreaterThanOrEqualTo("1.13") {
... ...
@@ -878,7 +878,7 @@ func wsContainersAttach(eng *engine.Engine, version version.Version, w http.Resp
878 878
 		job.Stdout.Add(ws)
879 879
 		job.Stderr.Set(ws)
880 880
 		if err := job.Run(); err != nil {
881
-			utils.Errorf("Error attaching websocket: %s", err)
881
+			log.Errorf("Error attaching websocket: %s", err)
882 882
 		}
883 883
 	})
884 884
 	h.ServeHTTP(w, r)
... ...
@@ -1005,7 +1005,7 @@ func postContainersCopy(eng *engine.Engine, version version.Version, w http.Resp
1005 1005
 	job := eng.Job("container_copy", vars["name"], copyData.Get("Resource"))
1006 1006
 	job.Stdout.Add(w)
1007 1007
 	if err := job.Run(); err != nil {
1008
-		utils.Errorf("%s", err.Error())
1008
+		log.Errorf("%s", err.Error())
1009 1009
 		if strings.Contains(err.Error(), "No such container") {
1010 1010
 			w.WriteHeader(http.StatusNotFound)
1011 1011
 		} else if strings.Contains(err.Error(), "no such file or directory") {
... ...
@@ -1033,16 +1033,16 @@ func ping(eng *engine.Engine, version version.Version, w http.ResponseWriter, r
1033 1033
 func makeHttpHandler(eng *engine.Engine, logging bool, localMethod string, localRoute string, handlerFunc HttpApiFunc, enableCors bool, dockerVersion version.Version) http.HandlerFunc {
1034 1034
 	return func(w http.ResponseWriter, r *http.Request) {
1035 1035
 		// log the request
1036
-		utils.Debugf("Calling %s %s", localMethod, localRoute)
1036
+		log.Debugf("Calling %s %s", localMethod, localRoute)
1037 1037
 
1038 1038
 		if logging {
1039
-			log.Println(r.Method, r.RequestURI)
1039
+			log.Infof("%s %s\n", r.Method, r.RequestURI)
1040 1040
 		}
1041 1041
 
1042 1042
 		if strings.Contains(r.Header.Get("User-Agent"), "Docker-Client/") {
1043 1043
 			userAgent := strings.Split(r.Header.Get("User-Agent"), "/")
1044 1044
 			if len(userAgent) == 2 && !dockerVersion.Equal(version.Version(userAgent[1])) {
1045
-				utils.Debugf("Warning: client and server don't have the same version (client: %s, server: %s)", userAgent[1], dockerVersion)
1045
+				log.Debugf("Warning: client and server don't have the same version (client: %s, server: %s)", userAgent[1], dockerVersion)
1046 1046
 			}
1047 1047
 		}
1048 1048
 		version := version.Version(mux.Vars(r)["version"])
... ...
@@ -1059,7 +1059,7 @@ func makeHttpHandler(eng *engine.Engine, logging bool, localMethod string, local
1059 1059
 		}
1060 1060
 
1061 1061
 		if err := handlerFunc(eng, version, w, r, mux.Vars(r)); err != nil {
1062
-			utils.Errorf("Handler for %s %s returned error: %s", localMethod, localRoute, err)
1062
+			log.Errorf("Handler for %s %s returned error: %s", localMethod, localRoute, err)
1063 1063
 			httpError(w, err)
1064 1064
 		}
1065 1065
 	}
... ...
@@ -1148,7 +1148,7 @@ func createRouter(eng *engine.Engine, logging, enableCors bool, dockerVersion st
1148 1148
 
1149 1149
 	for method, routes := range m {
1150 1150
 		for route, fct := range routes {
1151
-			utils.Debugf("Registering %s, %s", method, route)
1151
+			log.Debugf("Registering %s, %s", method, route)
1152 1152
 			// NOTE: scope issue, make sure the variables are local and won't be changed
1153 1153
 			localRoute := route
1154 1154
 			localFct := fct
... ...
@@ -1238,7 +1238,7 @@ func changeGroup(addr string, nameOrGid string) error {
1238 1238
 		return err
1239 1239
 	}
1240 1240
 
1241
-	utils.Debugf("%s group found. gid: %d", nameOrGid, gid)
1241
+	log.Debugf("%s group found. gid: %d", nameOrGid, gid)
1242 1242
 	return os.Chown(addr, 0, gid)
1243 1243
 }
1244 1244
 
... ...
@@ -1309,7 +1309,7 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
1309 1309
 	switch proto {
1310 1310
 	case "tcp":
1311 1311
 		if !strings.HasPrefix(addr, "127.0.0.1") && !job.GetenvBool("TlsVerify") {
1312
-			log.Println("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
1312
+			log.Infof("/!\\ DON'T BIND ON ANOTHER IP ADDRESS THAN 127.0.0.1 IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\")
1313 1313
 		}
1314 1314
 	case "unix":
1315 1315
 		socketGroup := job.Getenv("SocketGroup")
... ...
@@ -1317,7 +1317,7 @@ func ListenAndServe(proto, addr string, job *engine.Job) error {
1317 1317
 			if err := changeGroup(addr, socketGroup); err != nil {
1318 1318
 				if socketGroup == "docker" {
1319 1319
 					// if the user hasn't explicitly specified the group ownership, don't fail on errors.
1320
-					utils.Debugf("Warning: could not chgrp %s to docker: %s", addr, err.Error())
1320
+					log.Debugf("Warning: could not chgrp %s to docker: %s", addr, err.Error())
1321 1321
 				} else {
1322 1322
 					return err
1323 1323
 				}
... ...
@@ -1352,7 +1352,7 @@ func ServeApi(job *engine.Job) engine.Status {
1352 1352
 			return job.Errorf("usage: %s PROTO://ADDR [PROTO://ADDR ...]", job.Name)
1353 1353
 		}
1354 1354
 		go func() {
1355
-			log.Printf("Listening for HTTP on %s (%s)\n", protoAddrParts[0], protoAddrParts[1])
1355
+			log.Infof("Listening for HTTP on %s (%s)\n", protoAddrParts[0], protoAddrParts[1])
1356 1356
 			chErrors <- ListenAndServe(protoAddrParts[0], protoAddrParts[1], job)
1357 1357
 		}()
1358 1358
 	}
... ...
@@ -16,9 +16,11 @@ import (
16 16
 	"strings"
17 17
 	"syscall"
18 18
 
19
+	"github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar"
20
+
21
+	"github.com/docker/docker/pkg/log"
19 22
 	"github.com/docker/docker/pkg/system"
20 23
 	"github.com/docker/docker/utils"
21
-	"github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar"
22 24
 )
23 25
 
24 26
 type (
... ...
@@ -61,7 +63,7 @@ func DetectCompression(source []byte) Compression {
61 61
 		Xz:    {0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00},
62 62
 	} {
63 63
 		if len(source) < len(m) {
64
-			utils.Debugf("Len too short")
64
+			log.Debugf("Len too short")
65 65
 			continue
66 66
 		}
67 67
 		if bytes.Compare(m, source[:len(m)]) == 0 {
... ...
@@ -83,7 +85,7 @@ func DecompressStream(archive io.Reader) (io.ReadCloser, error) {
83 83
 	if err != nil {
84 84
 		return nil, err
85 85
 	}
86
-	utils.Debugf("[tar autodetect] n: %v", bs)
86
+	log.Debugf("[tar autodetect] n: %v", bs)
87 87
 
88 88
 	compression := DetectCompression(bs)
89 89
 
... ...
@@ -252,7 +254,7 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, L
252 252
 		}
253 253
 
254 254
 	case tar.TypeXGlobalHeader:
255
-		utils.Debugf("PAX Global Extended Headers found and ignored")
255
+		log.Debugf("PAX Global Extended Headers found and ignored")
256 256
 		return nil
257 257
 
258 258
 	default:
... ...
@@ -340,7 +342,7 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error)
340 340
 		for _, include := range options.Includes {
341 341
 			filepath.Walk(filepath.Join(srcPath, include), func(filePath string, f os.FileInfo, err error) error {
342 342
 				if err != nil {
343
-					utils.Debugf("Tar: Can't stat file %s to tar: %s\n", srcPath, err)
343
+					log.Debugf("Tar: Can't stat file %s to tar: %s\n", srcPath, err)
344 344
 					return nil
345 345
 				}
346 346
 
... ...
@@ -351,7 +353,7 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error)
351 351
 
352 352
 				skip, err := utils.Matches(relFilePath, options.Excludes)
353 353
 				if err != nil {
354
-					utils.Debugf("Error matching %s\n", relFilePath, err)
354
+					log.Debugf("Error matching %s\n", relFilePath, err)
355 355
 					return err
356 356
 				}
357 357
 
... ...
@@ -363,7 +365,7 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error)
363 363
 				}
364 364
 
365 365
 				if err := addTarFile(filePath, relFilePath, tw, twBuf); err != nil {
366
-					utils.Debugf("Can't add file %s to tar: %s\n", srcPath, err)
366
+					log.Debugf("Can't add file %s to tar: %s\n", srcPath, err)
367 367
 				}
368 368
 				return nil
369 369
 			})
... ...
@@ -371,13 +373,13 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error)
371 371
 
372 372
 		// Make sure to check the error on Close.
373 373
 		if err := tw.Close(); err != nil {
374
-			utils.Debugf("Can't close tar writer: %s\n", err)
374
+			log.Debugf("Can't close tar writer: %s\n", err)
375 375
 		}
376 376
 		if err := compressWriter.Close(); err != nil {
377
-			utils.Debugf("Can't close compress writer: %s\n", err)
377
+			log.Debugf("Can't close compress writer: %s\n", err)
378 378
 		}
379 379
 		if err := pipeWriter.Close(); err != nil {
380
-			utils.Debugf("Can't close pipe writer: %s\n", err)
380
+			log.Debugf("Can't close pipe writer: %s\n", err)
381 381
 		}
382 382
 	}()
383 383
 
... ...
@@ -489,7 +491,7 @@ loop:
489 489
 // the output of one piped into the other. If either Tar or Untar fails,
490 490
 // TarUntar aborts and returns the error.
491 491
 func TarUntar(src string, dst string) error {
492
-	utils.Debugf("TarUntar(%s %s)", src, dst)
492
+	log.Debugf("TarUntar(%s %s)", src, dst)
493 493
 	archive, err := TarWithOptions(src, &TarOptions{Compression: Uncompressed})
494 494
 	if err != nil {
495 495
 		return err
... ...
@@ -526,11 +528,11 @@ func CopyWithTar(src, dst string) error {
526 526
 		return CopyFileWithTar(src, dst)
527 527
 	}
528 528
 	// Create dst, copy src's content into it
529
-	utils.Debugf("Creating dest directory: %s", dst)
529
+	log.Debugf("Creating dest directory: %s", dst)
530 530
 	if err := os.MkdirAll(dst, 0755); err != nil && !os.IsExist(err) {
531 531
 		return err
532 532
 	}
533
-	utils.Debugf("Calling TarUntar(%s, %s)", src, dst)
533
+	log.Debugf("Calling TarUntar(%s, %s)", src, dst)
534 534
 	return TarUntar(src, dst)
535 535
 }
536 536
 
... ...
@@ -541,7 +543,7 @@ func CopyWithTar(src, dst string) error {
541 541
 // If `dst` ends with a trailing slash '/', the final destination path
542 542
 // will be `dst/base(src)`.
543 543
 func CopyFileWithTar(src, dst string) (err error) {
544
-	utils.Debugf("CopyFileWithTar(%s, %s)", src, dst)
544
+	log.Debugf("CopyFileWithTar(%s, %s)", src, dst)
545 545
 	srcSt, err := os.Stat(src)
546 546
 	if err != nil {
547 547
 		return err
... ...
@@ -11,9 +11,10 @@ import (
11 11
 	"syscall"
12 12
 	"time"
13 13
 
14
-	"github.com/docker/docker/pkg/system"
15
-	"github.com/docker/docker/utils"
16 14
 	"github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar"
15
+
16
+	"github.com/docker/docker/pkg/log"
17
+	"github.com/docker/docker/pkg/system"
17 18
 )
18 19
 
19 20
 type ChangeType int
... ...
@@ -363,19 +364,19 @@ func ExportChanges(dir string, changes []Change) (Archive, error) {
363 363
 					ChangeTime: timestamp,
364 364
 				}
365 365
 				if err := tw.WriteHeader(hdr); err != nil {
366
-					utils.Debugf("Can't write whiteout header: %s\n", err)
366
+					log.Debugf("Can't write whiteout header: %s\n", err)
367 367
 				}
368 368
 			} else {
369 369
 				path := filepath.Join(dir, change.Path)
370 370
 				if err := addTarFile(path, change.Path[1:], tw, twBuf); err != nil {
371
-					utils.Debugf("Can't add file %s to tar: %s\n", path, err)
371
+					log.Debugf("Can't add file %s to tar: %s\n", path, err)
372 372
 				}
373 373
 			}
374 374
 		}
375 375
 
376 376
 		// Make sure to check the error on Close.
377 377
 		if err := tw.Close(); err != nil {
378
-			utils.Debugf("Can't close layer: %s\n", err)
378
+			log.Debugf("Can't close layer: %s\n", err)
379 379
 		}
380 380
 		writer.Close()
381 381
 	}()
... ...
@@ -9,6 +9,7 @@ import (
9 9
 
10 10
 	"github.com/docker/docker/engine"
11 11
 	"github.com/docker/docker/pkg/jsonlog"
12
+	"github.com/docker/docker/pkg/log"
12 13
 	"github.com/docker/docker/utils"
13 14
 )
14 15
 
... ...
@@ -36,25 +37,25 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
36 36
 		cLog, err := container.ReadLog("json")
37 37
 		if err != nil && os.IsNotExist(err) {
38 38
 			// Legacy logs
39
-			utils.Debugf("Old logs format")
39
+			log.Debugf("Old logs format")
40 40
 			if stdout {
41 41
 				cLog, err := container.ReadLog("stdout")
42 42
 				if err != nil {
43
-					utils.Errorf("Error reading logs (stdout): %s", err)
43
+					log.Errorf("Error reading logs (stdout): %s", err)
44 44
 				} else if _, err := io.Copy(job.Stdout, cLog); err != nil {
45
-					utils.Errorf("Error streaming logs (stdout): %s", err)
45
+					log.Errorf("Error streaming logs (stdout): %s", err)
46 46
 				}
47 47
 			}
48 48
 			if stderr {
49 49
 				cLog, err := container.ReadLog("stderr")
50 50
 				if err != nil {
51
-					utils.Errorf("Error reading logs (stderr): %s", err)
51
+					log.Errorf("Error reading logs (stderr): %s", err)
52 52
 				} else if _, err := io.Copy(job.Stderr, cLog); err != nil {
53
-					utils.Errorf("Error streaming logs (stderr): %s", err)
53
+					log.Errorf("Error streaming logs (stderr): %s", err)
54 54
 				}
55 55
 			}
56 56
 		} else if err != nil {
57
-			utils.Errorf("Error reading logs (json): %s", err)
57
+			log.Errorf("Error reading logs (json): %s", err)
58 58
 		} else {
59 59
 			dec := json.NewDecoder(cLog)
60 60
 			for {
... ...
@@ -63,7 +64,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
63 63
 				if err := dec.Decode(l); err == io.EOF {
64 64
 					break
65 65
 				} else if err != nil {
66
-					utils.Errorf("Error streaming logs: %s", err)
66
+					log.Errorf("Error streaming logs: %s", err)
67 67
 					break
68 68
 				}
69 69
 				if l.Stream == "stdout" && stdout {
... ...
@@ -88,7 +89,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
88 88
 			r, w := io.Pipe()
89 89
 			go func() {
90 90
 				defer w.Close()
91
-				defer utils.Debugf("Closing buffered stdin pipe")
91
+				defer log.Debugf("Closing buffered stdin pipe")
92 92
 				io.Copy(w, job.Stdin)
93 93
 			}()
94 94
 			cStdin = r
... ...
@@ -131,8 +132,8 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
131 131
 			errors <- err
132 132
 		} else {
133 133
 			go func() {
134
-				utils.Debugf("attach: stdin: begin")
135
-				defer utils.Debugf("attach: stdin: end")
134
+				log.Debugf("attach: stdin: begin")
135
+				defer log.Debugf("attach: stdin: end")
136 136
 				// No matter what, when stdin is closed (io.Copy unblock), close stdout and stderr
137 137
 				if container.Config.StdinOnce && !container.Config.Tty {
138 138
 					defer cStdin.Close()
... ...
@@ -155,7 +156,7 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
155 155
 					err = nil
156 156
 				}
157 157
 				if err != nil {
158
-					utils.Errorf("attach: stdin: %s", err)
158
+					log.Errorf("attach: stdin: %s", err)
159 159
 				}
160 160
 				errors <- err
161 161
 			}()
... ...
@@ -168,8 +169,8 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
168 168
 		} else {
169 169
 			cStdout = p
170 170
 			go func() {
171
-				utils.Debugf("attach: stdout: begin")
172
-				defer utils.Debugf("attach: stdout: end")
171
+				log.Debugf("attach: stdout: begin")
172
+				defer log.Debugf("attach: stdout: end")
173 173
 				// If we are in StdinOnce mode, then close stdin
174 174
 				if container.Config.StdinOnce && stdin != nil {
175 175
 					defer stdin.Close()
... ...
@@ -182,7 +183,7 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
182 182
 					err = nil
183 183
 				}
184 184
 				if err != nil {
185
-					utils.Errorf("attach: stdout: %s", err)
185
+					log.Errorf("attach: stdout: %s", err)
186 186
 				}
187 187
 				errors <- err
188 188
 			}()
... ...
@@ -193,7 +194,7 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
193 193
 				defer stdinCloser.Close()
194 194
 			}
195 195
 			if cStdout, err := container.StdoutPipe(); err != nil {
196
-				utils.Errorf("attach: stdout pipe: %s", err)
196
+				log.Errorf("attach: stdout pipe: %s", err)
197 197
 			} else {
198 198
 				io.Copy(&utils.NopWriter{}, cStdout)
199 199
 			}
... ...
@@ -206,8 +207,8 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
206 206
 		} else {
207 207
 			cStderr = p
208 208
 			go func() {
209
-				utils.Debugf("attach: stderr: begin")
210
-				defer utils.Debugf("attach: stderr: end")
209
+				log.Debugf("attach: stderr: begin")
210
+				defer log.Debugf("attach: stderr: end")
211 211
 				// If we are in StdinOnce mode, then close stdin
212 212
 				if container.Config.StdinOnce && stdin != nil {
213 213
 					defer stdin.Close()
... ...
@@ -220,7 +221,7 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
220 220
 					err = nil
221 221
 				}
222 222
 				if err != nil {
223
-					utils.Errorf("attach: stderr: %s", err)
223
+					log.Errorf("attach: stderr: %s", err)
224 224
 				}
225 225
 				errors <- err
226 226
 			}()
... ...
@@ -232,7 +233,7 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
232 232
 			}
233 233
 
234 234
 			if cStderr, err := container.StderrPipe(); err != nil {
235
-				utils.Errorf("attach: stdout pipe: %s", err)
235
+				log.Errorf("attach: stdout pipe: %s", err)
236 236
 			} else {
237 237
 				io.Copy(&utils.NopWriter{}, cStderr)
238 238
 			}
... ...
@@ -252,14 +253,14 @@ func (daemon *Daemon) Attach(container *Container, stdin io.ReadCloser, stdinClo
252 252
 		// FIXME: how to clean up the stdin goroutine without the unwanted side effect
253 253
 		// of closing the passed stdin? Add an intermediary io.Pipe?
254 254
 		for i := 0; i < nJobs; i += 1 {
255
-			utils.Debugf("attach: waiting for job %d/%d", i+1, nJobs)
255
+			log.Debugf("attach: waiting for job %d/%d", i+1, nJobs)
256 256
 			if err := <-errors; err != nil {
257
-				utils.Errorf("attach: job %d returned error %s, aborting all jobs", i+1, err)
257
+				log.Errorf("attach: job %d returned error %s, aborting all jobs", i+1, err)
258 258
 				return err
259 259
 			}
260
-			utils.Debugf("attach: job %d completed successfully", i+1)
260
+			log.Debugf("attach: job %d completed successfully", i+1)
261 261
 		}
262
-		utils.Debugf("attach: all jobs completed successfully")
262
+		log.Debugf("attach: all jobs completed successfully")
263 263
 		return nil
264 264
 	})
265 265
 }
... ...
@@ -23,6 +23,7 @@ import (
23 23
 	"github.com/docker/docker/archive"
24 24
 	"github.com/docker/docker/engine"
25 25
 	"github.com/docker/docker/nat"
26
+	"github.com/docker/docker/pkg/log"
26 27
 	"github.com/docker/docker/pkg/parsers"
27 28
 	"github.com/docker/docker/pkg/symlink"
28 29
 	"github.com/docker/docker/pkg/system"
... ...
@@ -262,11 +263,11 @@ func (b *buildFile) probeCache() (bool, error) {
262 262
 			return false, err
263 263
 		} else if cache != nil {
264 264
 			fmt.Fprintf(b.outStream, " ---> Using cache\n")
265
-			utils.Debugf("[BUILDER] Use cached version")
265
+			log.Debugf("[BUILDER] Use cached version")
266 266
 			b.image = cache.ID
267 267
 			return true, nil
268 268
 		} else {
269
-			utils.Debugf("[BUILDER] Cache miss")
269
+			log.Debugf("[BUILDER] Cache miss")
270 270
 		}
271 271
 	}
272 272
 	return false, nil
... ...
@@ -288,7 +289,7 @@ func (b *buildFile) CmdRun(args string) error {
288 288
 
289 289
 	defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
290 290
 
291
-	utils.Debugf("Command to be executed: %v", b.config.Cmd)
291
+	log.Debugf("Command to be executed: %v", b.config.Cmd)
292 292
 
293 293
 	hit, err := b.probeCache()
294 294
 	if err != nil {
... ...
@@ -378,7 +379,7 @@ func (b *buildFile) CmdEnv(args string) error {
378 378
 func (b *buildFile) buildCmdFromJson(args string) []string {
379 379
 	var cmd []string
380 380
 	if err := json.Unmarshal([]byte(args), &cmd); err != nil {
381
-		utils.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err)
381
+		log.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err)
382 382
 		cmd = []string{"/bin/sh", "-c", args}
383 383
 	}
384 384
 	return cmd
... ...
@@ -551,7 +552,7 @@ func (b *buildFile) addContext(container *Container, orig, dest string, decompre
551 551
 		if err := archive.UntarPath(origPath, tarDest); err == nil {
552 552
 			return nil
553 553
 		} else if err != io.EOF {
554
-			utils.Debugf("Couldn't untar %s to %s: %s", origPath, tarDest, err)
554
+			log.Debugf("Couldn't untar %s to %s: %s", origPath, tarDest, err)
555 555
 		}
556 556
 	}
557 557
 
... ...
@@ -6,7 +6,6 @@ import (
6 6
 	"fmt"
7 7
 	"io"
8 8
 	"io/ioutil"
9
-	"log"
10 9
 	"os"
11 10
 	"path"
12 11
 	"path/filepath"
... ...
@@ -15,6 +14,9 @@ import (
15 15
 	"syscall"
16 16
 	"time"
17 17
 
18
+	"github.com/docker/libcontainer/devices"
19
+	"github.com/docker/libcontainer/label"
20
+
18 21
 	"github.com/docker/docker/archive"
19 22
 	"github.com/docker/docker/daemon/execdriver"
20 23
 	"github.com/docker/docker/daemon/graphdriver"
... ...
@@ -23,13 +25,12 @@ import (
23 23
 	"github.com/docker/docker/links"
24 24
 	"github.com/docker/docker/nat"
25 25
 	"github.com/docker/docker/pkg/broadcastwriter"
26
+	"github.com/docker/docker/pkg/log"
26 27
 	"github.com/docker/docker/pkg/networkfs/etchosts"
27 28
 	"github.com/docker/docker/pkg/networkfs/resolvconf"
28 29
 	"github.com/docker/docker/pkg/symlink"
29 30
 	"github.com/docker/docker/runconfig"
30 31
 	"github.com/docker/docker/utils"
31
-	"github.com/docker/libcontainer/devices"
32
-	"github.com/docker/libcontainer/label"
33 32
 )
34 33
 
35 34
 const DefaultPathEnv = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
... ...
@@ -171,7 +172,7 @@ func (container *Container) WriteHostConfig() error {
171 171
 func (container *Container) LogEvent(action string) {
172 172
 	d := container.daemon
173 173
 	if err := d.eng.Job("log", action, container.ID, d.Repositories().ImageName(container.Image)).Run(); err != nil {
174
-		utils.Errorf("Error logging event %s for %s: %s", action, container.ID, err)
174
+		log.Errorf("Error logging event %s for %s: %s", action, container.ID, err)
175 175
 	}
176 176
 }
177 177
 
... ...
@@ -503,7 +504,7 @@ func (container *Container) monitor(callback execdriver.StartCallback) error {
503 503
 	pipes := execdriver.NewPipes(container.stdin, container.stdout, container.stderr, container.Config.OpenStdin)
504 504
 	exitCode, err = container.daemon.Run(container, pipes, callback)
505 505
 	if err != nil {
506
-		utils.Errorf("Error running container: %s", err)
506
+		log.Errorf("Error running container: %s", err)
507 507
 	}
508 508
 	container.State.SetStopped(exitCode)
509 509
 
... ...
@@ -519,7 +520,7 @@ func (container *Container) monitor(callback execdriver.StartCallback) error {
519 519
 	// This will cause it to be restarted when the engine is restarted.
520 520
 	if container.daemon != nil && container.daemon.eng != nil && !container.daemon.eng.IsShutdown() {
521 521
 		if err := container.toDisk(); err != nil {
522
-			utils.Errorf("Error dumping container %s state to disk: %s\n", container.ID, err)
522
+			log.Errorf("Error dumping container %s state to disk: %s\n", container.ID, err)
523 523
 		}
524 524
 	}
525 525
 	return err
... ...
@@ -536,28 +537,28 @@ func (container *Container) cleanup() {
536 536
 	}
537 537
 	if container.Config.OpenStdin {
538 538
 		if err := container.stdin.Close(); err != nil {
539
-			utils.Errorf("%s: Error close stdin: %s", container.ID, err)
539
+			log.Errorf("%s: Error close stdin: %s", container.ID, err)
540 540
 		}
541 541
 	}
542 542
 	if err := container.stdout.Clean(); err != nil {
543
-		utils.Errorf("%s: Error close stdout: %s", container.ID, err)
543
+		log.Errorf("%s: Error close stdout: %s", container.ID, err)
544 544
 	}
545 545
 	if err := container.stderr.Clean(); err != nil {
546
-		utils.Errorf("%s: Error close stderr: %s", container.ID, err)
546
+		log.Errorf("%s: Error close stderr: %s", container.ID, err)
547 547
 	}
548 548
 	if container.command != nil && container.command.Terminal != nil {
549 549
 		if err := container.command.Terminal.Close(); err != nil {
550
-			utils.Errorf("%s: Error closing terminal: %s", container.ID, err)
550
+			log.Errorf("%s: Error closing terminal: %s", container.ID, err)
551 551
 		}
552 552
 	}
553 553
 
554 554
 	if err := container.Unmount(); err != nil {
555
-		log.Printf("%v: Failed to umount filesystem: %v", container.ID, err)
555
+		log.Errorf("%v: Failed to umount filesystem: %v", container.ID, err)
556 556
 	}
557 557
 }
558 558
 
559 559
 func (container *Container) KillSig(sig int) error {
560
-	utils.Debugf("Sending %d to %s", sig, container.ID)
560
+	log.Debugf("Sending %d to %s", sig, container.ID)
561 561
 	container.Lock()
562 562
 	defer container.Unlock()
563 563
 
... ...
@@ -606,7 +607,7 @@ func (container *Container) Kill() error {
606 606
 	if _, err := container.State.WaitStop(10 * time.Second); err != nil {
607 607
 		// Ensure that we don't kill ourselves
608 608
 		if pid := container.State.GetPid(); pid != 0 {
609
-			log.Printf("Container %s failed to exit within 10 seconds of kill - trying direct SIGKILL", utils.TruncateID(container.ID))
609
+			log.Infof("Container %s failed to exit within 10 seconds of kill - trying direct SIGKILL", utils.TruncateID(container.ID))
610 610
 			if err := syscall.Kill(pid, 9); err != nil {
611 611
 				return err
612 612
 			}
... ...
@@ -624,7 +625,7 @@ func (container *Container) Stop(seconds int) error {
624 624
 
625 625
 	// 1. Send a SIGTERM
626 626
 	if err := container.KillSig(15); err != nil {
627
-		log.Print("Failed to send SIGTERM to the process, force killing")
627
+		log.Infof("Failed to send SIGTERM to the process, force killing")
628 628
 		if err := container.KillSig(9); err != nil {
629 629
 			return err
630 630
 		}
... ...
@@ -632,7 +633,7 @@ func (container *Container) Stop(seconds int) error {
632 632
 
633 633
 	// 2. Wait for the process to exit on its own
634 634
 	if _, err := container.State.WaitStop(time.Duration(seconds) * time.Second); err != nil {
635
-		log.Printf("Container %v failed to exit within %d seconds of SIGTERM - using the force", container.ID, seconds)
635
+		log.Infof("Container %v failed to exit within %d seconds of SIGTERM - using the force", container.ID, seconds)
636 636
 		// 3. If it doesn't, then send SIGKILL
637 637
 		if err := container.Kill(); err != nil {
638 638
 			container.State.WaitStop(-1 * time.Second)
... ...
@@ -761,7 +762,7 @@ func (container *Container) GetSize() (int64, int64) {
761 761
 	)
762 762
 
763 763
 	if err := container.Mount(); err != nil {
764
-		utils.Errorf("Warning: failed to compute size of container rootfs %s: %s", container.ID, err)
764
+		log.Errorf("Warning: failed to compute size of container rootfs %s: %s", container.ID, err)
765 765
 		return sizeRw, sizeRootfs
766 766
 	}
767 767
 	defer container.Unmount()
... ...
@@ -769,7 +770,7 @@ func (container *Container) GetSize() (int64, int64) {
769 769
 	if differ, ok := container.daemon.driver.(graphdriver.Differ); ok {
770 770
 		sizeRw, err = differ.DiffSize(container.ID)
771 771
 		if err != nil {
772
-			utils.Errorf("Warning: driver %s couldn't return diff size of container %s: %s", driver, container.ID, err)
772
+			log.Errorf("Warning: driver %s couldn't return diff size of container %s: %s", driver, container.ID, err)
773 773
 			// FIXME: GetSize should return an error. Not changing it now in case
774 774
 			// there is a side-effect.
775 775
 			sizeRw = -1
... ...
@@ -866,7 +867,7 @@ func (container *Container) DisableLink(name string) {
866 866
 		if link, exists := container.activeLinks[name]; exists {
867 867
 			link.Disable()
868 868
 		} else {
869
-			utils.Debugf("Could not find active link for %s", name)
869
+			log.Debugf("Could not find active link for %s", name)
870 870
 		}
871 871
 	}
872 872
 }
... ...
@@ -978,15 +979,15 @@ func (container *Container) initializeNetworking() error {
978 978
 // Make sure the config is compatible with the current kernel
979 979
 func (container *Container) verifyDaemonSettings() {
980 980
 	if container.Config.Memory > 0 && !container.daemon.sysInfo.MemoryLimit {
981
-		log.Printf("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.\n")
981
+		log.Infof("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.\n")
982 982
 		container.Config.Memory = 0
983 983
 	}
984 984
 	if container.Config.Memory > 0 && !container.daemon.sysInfo.SwapLimit {
985
-		log.Printf("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.\n")
985
+		log.Infof("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.\n")
986 986
 		container.Config.MemorySwap = -1
987 987
 	}
988 988
 	if container.daemon.sysInfo.IPv4ForwardingDisabled {
989
-		log.Printf("WARNING: IPv4 forwarding is disabled. Networking will not work")
989
+		log.Infof("WARNING: IPv4 forwarding is disabled. Networking will not work")
990 990
 	}
991 991
 }
992 992
 
... ...
@@ -1123,7 +1124,7 @@ func (container *Container) waitForStart() error {
1123 1123
 		}
1124 1124
 		container.State.SetRunning(command.Pid())
1125 1125
 		if err := container.toDisk(); err != nil {
1126
-			utils.Debugf("%s", err)
1126
+			log.Debugf("%s", err)
1127 1127
 		}
1128 1128
 		close(waitStart)
1129 1129
 	}
... ...
@@ -4,7 +4,6 @@ import (
4 4
 	"fmt"
5 5
 	"io"
6 6
 	"io/ioutil"
7
-	"log"
8 7
 	"os"
9 8
 	"path"
10 9
 	"regexp"
... ...
@@ -13,6 +12,8 @@ import (
13 13
 	"sync"
14 14
 	"time"
15 15
 
16
+	"github.com/docker/libcontainer/label"
17
+
16 18
 	"github.com/docker/docker/archive"
17 19
 	"github.com/docker/docker/daemon/execdriver"
18 20
 	"github.com/docker/docker/daemon/execdriver/execdrivers"
... ...
@@ -27,6 +28,7 @@ import (
27 27
 	"github.com/docker/docker/image"
28 28
 	"github.com/docker/docker/pkg/broadcastwriter"
29 29
 	"github.com/docker/docker/pkg/graphdb"
30
+	"github.com/docker/docker/pkg/log"
30 31
 	"github.com/docker/docker/pkg/namesgenerator"
31 32
 	"github.com/docker/docker/pkg/networkfs/resolvconf"
32 33
 	"github.com/docker/docker/pkg/parsers"
... ...
@@ -35,7 +37,6 @@ import (
35 35
 	"github.com/docker/docker/pkg/truncindex"
36 36
 	"github.com/docker/docker/runconfig"
37 37
 	"github.com/docker/docker/utils"
38
-	"github.com/docker/libcontainer/label"
39 38
 )
40 39
 
41 40
 // Set the max depth to the aufs default that most
... ...
@@ -217,7 +218,7 @@ func (daemon *Daemon) register(container *Container, updateSuffixarray bool, con
217 217
 	//        if so, then we need to restart monitor and init a new lock
218 218
 	// If the container is supposed to be running, make sure of it
219 219
 	if container.State.IsRunning() {
220
-		utils.Debugf("killing old running container %s", container.ID)
220
+		log.Debugf("killing old running container %s", container.ID)
221 221
 
222 222
 		existingPid := container.State.Pid
223 223
 		container.State.SetStopped(0)
... ...
@@ -234,23 +235,23 @@ func (daemon *Daemon) register(container *Container, updateSuffixarray bool, con
234 234
 			var err error
235 235
 			cmd.Process, err = os.FindProcess(existingPid)
236 236
 			if err != nil {
237
-				utils.Debugf("cannot find existing process for %d", existingPid)
237
+				log.Debugf("cannot find existing process for %d", existingPid)
238 238
 			}
239 239
 			daemon.execDriver.Terminate(cmd)
240 240
 		}
241 241
 
242 242
 		if err := container.Unmount(); err != nil {
243
-			utils.Debugf("unmount error %s", err)
243
+			log.Debugf("unmount error %s", err)
244 244
 		}
245 245
 		if err := container.ToDisk(); err != nil {
246
-			utils.Debugf("saving stopped state to disk %s", err)
246
+			log.Debugf("saving stopped state to disk %s", err)
247 247
 		}
248 248
 
249 249
 		info := daemon.execDriver.Info(container.ID)
250 250
 		if !info.IsRunning() {
251
-			utils.Debugf("Container %s was supposed to be running but is not.", container.ID)
251
+			log.Debugf("Container %s was supposed to be running but is not.", container.ID)
252 252
 
253
-			utils.Debugf("Marking as stopped")
253
+			log.Debugf("Marking as stopped")
254 254
 
255 255
 			container.State.SetStopped(-127)
256 256
 			if err := container.ToDisk(); err != nil {
... ...
@@ -258,7 +259,7 @@ func (daemon *Daemon) register(container *Container, updateSuffixarray bool, con
258 258
 			}
259 259
 
260 260
 			if daemon.config.AutoRestart {
261
-				utils.Debugf("Marking as restarting")
261
+				log.Debugf("Marking as restarting")
262 262
 
263 263
 				if containersToStart != nil {
264 264
 					*containersToStart = append(*containersToStart, container)
... ...
@@ -278,7 +279,7 @@ func (daemon *Daemon) ensureName(container *Container) error {
278 278
 		container.Name = name
279 279
 
280 280
 		if err := container.ToDisk(); err != nil {
281
-			utils.Debugf("Error saving container name %s", err)
281
+			log.Debugf("Error saving container name %s", err)
282 282
 		}
283 283
 	}
284 284
 	return nil
... ...
@@ -302,7 +303,7 @@ func (daemon *Daemon) restore() error {
302 302
 	)
303 303
 
304 304
 	if !debug {
305
-		fmt.Printf("Loading containers: ")
305
+		log.Infof("Loading containers: ")
306 306
 	}
307 307
 	dir, err := ioutil.ReadDir(daemon.repository)
308 308
 	if err != nil {
... ...
@@ -316,16 +317,16 @@ func (daemon *Daemon) restore() error {
316 316
 			fmt.Print(".")
317 317
 		}
318 318
 		if err != nil {
319
-			utils.Errorf("Failed to load container %v: %v", id, err)
319
+			log.Errorf("Failed to load container %v: %v", id, err)
320 320
 			continue
321 321
 		}
322 322
 
323 323
 		// Ignore the container if it does not support the current driver being used by the graph
324 324
 		if container.Driver == "" && currentDriver == "aufs" || container.Driver == currentDriver {
325
-			utils.Debugf("Loaded container %v", container.ID)
325
+			log.Debugf("Loaded container %v", container.ID)
326 326
 			containers[container.ID] = container
327 327
 		} else {
328
-			utils.Debugf("Cannot load container %s because it was created with another graph driver.", container.ID)
328
+			log.Debugf("Cannot load container %s because it was created with another graph driver.", container.ID)
329 329
 		}
330 330
 	}
331 331
 
... ...
@@ -337,7 +338,7 @@ func (daemon *Daemon) restore() error {
337 337
 			e := entities[p]
338 338
 			if container, ok := containers[e.ID()]; ok {
339 339
 				if err := daemon.register(container, false, &containersToStart); err != nil {
340
-					utils.Debugf("Failed to register container %s: %s", container.ID, err)
340
+					log.Debugf("Failed to register container %s: %s", container.ID, err)
341 341
 				}
342 342
 				delete(containers, e.ID())
343 343
 			}
... ...
@@ -349,22 +350,22 @@ func (daemon *Daemon) restore() error {
349 349
 		// Try to set the default name for a container if it exists prior to links
350 350
 		container.Name, err = daemon.generateNewName(container.ID)
351 351
 		if err != nil {
352
-			utils.Debugf("Setting default id - %s", err)
352
+			log.Debugf("Setting default id - %s", err)
353 353
 		}
354 354
 		if err := daemon.register(container, false, &containersToStart); err != nil {
355
-			utils.Debugf("Failed to register container %s: %s", container.ID, err)
355
+			log.Debugf("Failed to register container %s: %s", container.ID, err)
356 356
 		}
357 357
 	}
358 358
 
359 359
 	for _, container := range containersToStart {
360
-		utils.Debugf("Starting container %d", container.ID)
360
+		log.Debugf("Starting container %d", container.ID)
361 361
 		if err := container.Start(); err != nil {
362
-			utils.Debugf("Failed to start container %s: %s", container.ID, err)
362
+			log.Debugf("Failed to start container %s: %s", container.ID, err)
363 363
 		}
364 364
 	}
365 365
 
366 366
 	if !debug {
367
-		fmt.Printf(": done.\n")
367
+		log.Infof(": done.\n")
368 368
 	}
369 369
 
370 370
 	return nil
... ...
@@ -707,7 +708,7 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
707 707
 		log.Fatalf("The Docker daemon needs to be run as root")
708 708
 	}
709 709
 	if err := checkKernelAndArch(); err != nil {
710
-		log.Fatal(err)
710
+		log.Fatalf(err.Error())
711 711
 	}
712 712
 
713 713
 	// set up the TempDir to use a canonical path
... ...
@@ -748,7 +749,7 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
748 748
 	if err != nil {
749 749
 		return nil, err
750 750
 	}
751
-	utils.Debugf("Using graph driver %s", driver)
751
+	log.Debugf("Using graph driver %s", driver)
752 752
 
753 753
 	// As Docker on btrfs and SELinux are incompatible at present, error on both being enabled
754 754
 	if config.EnableSelinuxSupport && driver.String() == "btrfs" {
... ...
@@ -766,7 +767,7 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
766 766
 		return nil, err
767 767
 	}
768 768
 
769
-	utils.Debugf("Creating images graph")
769
+	log.Debugf("Creating images graph")
770 770
 	g, err := graph.NewGraph(path.Join(config.Root, "graph"), driver)
771 771
 	if err != nil {
772 772
 		return nil, err
... ...
@@ -778,12 +779,12 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
778 778
 	if err != nil {
779 779
 		return nil, err
780 780
 	}
781
-	utils.Debugf("Creating volumes graph")
781
+	log.Debugf("Creating volumes graph")
782 782
 	volumes, err := graph.NewGraph(path.Join(config.Root, "volumes"), volumesDriver)
783 783
 	if err != nil {
784 784
 		return nil, err
785 785
 	}
786
-	utils.Debugf("Creating repository list")
786
+	log.Debugf("Creating repository list")
787 787
 	repositories, err := graph.NewTagStore(path.Join(config.Root, "repositories-"+driver.String()), g)
788 788
 	if err != nil {
789 789
 		return nil, fmt.Errorf("Couldn't create Tag store: %s", err)
... ...
@@ -862,18 +863,18 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
862 862
 	eng.OnShutdown(func() {
863 863
 		// FIXME: if these cleanup steps can be called concurrently, register
864 864
 		// them as separate handlers to speed up total shutdown time
865
-		// FIXME: use engine logging instead of utils.Errorf
865
+		// FIXME: use engine logging instead of log.Errorf
866 866
 		if err := daemon.shutdown(); err != nil {
867
-			utils.Errorf("daemon.shutdown(): %s", err)
867
+			log.Errorf("daemon.shutdown(): %s", err)
868 868
 		}
869 869
 		if err := portallocator.ReleaseAll(); err != nil {
870
-			utils.Errorf("portallocator.ReleaseAll(): %s", err)
870
+			log.Errorf("portallocator.ReleaseAll(): %s", err)
871 871
 		}
872 872
 		if err := daemon.driver.Cleanup(); err != nil {
873
-			utils.Errorf("daemon.driver.Cleanup(): %s", err.Error())
873
+			log.Errorf("daemon.driver.Cleanup(): %s", err.Error())
874 874
 		}
875 875
 		if err := daemon.containerGraph.Close(); err != nil {
876
-			utils.Errorf("daemon.containerGraph.Close(): %s", err.Error())
876
+			log.Errorf("daemon.containerGraph.Close(): %s", err.Error())
877 877
 		}
878 878
 	})
879 879
 
... ...
@@ -882,20 +883,20 @@ func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error)
882 882
 
883 883
 func (daemon *Daemon) shutdown() error {
884 884
 	group := sync.WaitGroup{}
885
-	utils.Debugf("starting clean shutdown of all containers...")
885
+	log.Debugf("starting clean shutdown of all containers...")
886 886
 	for _, container := range daemon.List() {
887 887
 		c := container
888 888
 		if c.State.IsRunning() {
889
-			utils.Debugf("stopping %s", c.ID)
889
+			log.Debugf("stopping %s", c.ID)
890 890
 			group.Add(1)
891 891
 
892 892
 			go func() {
893 893
 				defer group.Done()
894 894
 				if err := c.KillSig(15); err != nil {
895
-					utils.Debugf("kill 15 error for %s - %s", c.ID, err)
895
+					log.Debugf("kill 15 error for %s - %s", c.ID, err)
896 896
 				}
897 897
 				c.State.WaitStop(-1 * time.Second)
898
-				utils.Debugf("container stopped %s", c.ID)
898
+				log.Debugf("container stopped %s", c.ID)
899 899
 			}()
900 900
 		}
901 901
 	}
... ...
@@ -1056,7 +1057,7 @@ func (daemon *Daemon) checkLocaldns() error {
1056 1056
 		return err
1057 1057
 	}
1058 1058
 	if len(daemon.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
1059
-		log.Printf("Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : %v\n", DefaultDns)
1059
+		log.Infof("Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : %v\n", DefaultDns)
1060 1060
 		daemon.config.Dns = DefaultDns
1061 1061
 	}
1062 1062
 	return nil
... ...
@@ -1107,11 +1108,11 @@ func checkKernelAndArch() error {
1107 1107
 	// the circumstances of pre-3.8 crashes are clearer.
1108 1108
 	// For details see http://github.com/docker/docker/issues/407
1109 1109
 	if k, err := kernel.GetKernelVersion(); err != nil {
1110
-		log.Printf("WARNING: %s\n", err)
1110
+		log.Infof("WARNING: %s\n", err)
1111 1111
 	} else {
1112 1112
 		if kernel.CompareKernelVersion(k, &kernel.KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}) < 0 {
1113 1113
 			if os.Getenv("DOCKER_NOWARN_KERNEL_VERSION") == "" {
1114
-				log.Printf("WARNING: You are running linux kernel version %s, which might be unstable running docker. Please upgrade your kernel to 3.8.0.", k.String())
1114
+				log.Infof("WARNING: You are running linux kernel version %s, which might be unstable running docker. Please upgrade your kernel to 3.8.0.", k.String())
1115 1115
 			}
1116 1116
 		}
1117 1117
 	}
... ...
@@ -6,14 +6,14 @@ import (
6 6
 	"github.com/docker/docker/daemon/graphdriver"
7 7
 	"github.com/docker/docker/daemon/graphdriver/aufs"
8 8
 	"github.com/docker/docker/graph"
9
-	"github.com/docker/docker/utils"
9
+	"github.com/docker/docker/pkg/log"
10 10
 )
11 11
 
12 12
 // Given the graphdriver ad, if it is aufs, then migrate it.
13 13
 // If aufs driver is not built, this func is a noop.
14 14
 func migrateIfAufs(driver graphdriver.Driver, root string) error {
15 15
 	if ad, ok := driver.(*aufs.Driver); ok {
16
-		utils.Debugf("Migrating existing containers")
16
+		log.Debugf("Migrating existing containers")
17 17
 		if err := ad.Migrate(root, graph.SetupInitLayer); err != nil {
18 18
 			return err
19 19
 		}
... ...
@@ -2,14 +2,13 @@ package daemon
2 2
 
3 3
 import (
4 4
 	"fmt"
5
-	"log"
6 5
 	"os"
7 6
 	"path"
8 7
 	"path/filepath"
9 8
 	"strings"
10 9
 
11 10
 	"github.com/docker/docker/engine"
12
-	"github.com/docker/docker/utils"
11
+	"github.com/docker/docker/pkg/log"
13 12
 )
14 13
 
15 14
 // FIXME: rename to ContainerRemove for consistency with the CLI command.
... ...
@@ -118,7 +117,7 @@ func (daemon *Daemon) ContainerDestroy(job *engine.Job) engine.Status {
118 118
 			for volumeId := range volumes {
119 119
 				// If the requested volu
120 120
 				if c, exists := usedVolumes[volumeId]; exists {
121
-					log.Printf("The volume %s is used by the container %s. Impossible to remove it. Skipping.\n", volumeId, c.ID)
121
+					log.Infof("The volume %s is used by the container %s. Impossible to remove it. Skipping.\n", volumeId, c.ID)
122 122
 					continue
123 123
 				}
124 124
 				if err := daemon.Volumes().Delete(volumeId); err != nil {
... ...
@@ -153,7 +152,7 @@ func (daemon *Daemon) Destroy(container *Container) error {
153 153
 	daemon.containers.Delete(container.ID)
154 154
 
155 155
 	if _, err := daemon.containerGraph.Purge(container.ID); err != nil {
156
-		utils.Debugf("Unable to remove container from link graph: %s", err)
156
+		log.Debugf("Unable to remove container from link graph: %s", err)
157 157
 	}
158 158
 
159 159
 	if err := daemon.driver.Remove(container.ID); err != nil {
... ...
@@ -14,13 +14,15 @@ import (
14 14
 	"syscall"
15 15
 	"time"
16 16
 
17
+	"github.com/kr/pty"
18
+
17 19
 	"github.com/docker/docker/daemon/execdriver"
20
+	"github.com/docker/docker/pkg/log"
18 21
 	"github.com/docker/docker/pkg/term"
19 22
 	"github.com/docker/docker/utils"
20 23
 	"github.com/docker/libcontainer/cgroups"
21 24
 	"github.com/docker/libcontainer/label"
22 25
 	"github.com/docker/libcontainer/mount/nodes"
23
-	"github.com/kr/pty"
24 26
 )
25 27
 
26 28
 const DriverName = "lxc"
... ...
@@ -318,7 +320,7 @@ func (i *info) IsRunning() bool {
318 318
 
319 319
 	output, err := i.driver.getInfo(i.ID)
320 320
 	if err != nil {
321
-		utils.Errorf("Error getting info for lxc container %s: %s (%s)", i.ID, err, output)
321
+		log.Errorf("Error getting info for lxc container %s: %s (%s)", i.ID, err, output)
322 322
 		return false
323 323
 	}
324 324
 	if strings.Contains(string(output), "RUNNING") {
... ...
@@ -32,6 +32,7 @@ import (
32 32
 
33 33
 	"github.com/docker/docker/archive"
34 34
 	"github.com/docker/docker/daemon/graphdriver"
35
+	"github.com/docker/docker/pkg/log"
35 36
 	mountpk "github.com/docker/docker/pkg/mount"
36 37
 	"github.com/docker/docker/utils"
37 38
 	"github.com/docker/libcontainer/label"
... ...
@@ -209,7 +210,7 @@ func (a *Driver) Remove(id string) error {
209 209
 	defer a.Unlock()
210 210
 
211 211
 	if a.active[id] != 0 {
212
-		utils.Errorf("Warning: removing active id %s\n", id)
212
+		log.Errorf("Warning: removing active id %s\n", id)
213 213
 	}
214 214
 
215 215
 	// Make sure the dir is umounted first
... ...
@@ -378,7 +379,7 @@ func (a *Driver) Cleanup() error {
378 378
 
379 379
 	for _, id := range ids {
380 380
 		if err := a.unmount(id); err != nil {
381
-			utils.Errorf("Unmounting %s: %s", utils.TruncateID(id), err)
381
+			log.Errorf("Unmounting %s: %s", utils.TruncateID(id), err)
382 382
 		}
383 383
 	}
384 384
 
... ...
@@ -1,14 +1,15 @@
1 1
 package aufs
2 2
 
3 3
 import (
4
-	"github.com/docker/docker/utils"
5 4
 	"os/exec"
6 5
 	"syscall"
6
+
7
+	"github.com/docker/docker/pkg/log"
7 8
 )
8 9
 
9 10
 func Unmount(target string) error {
10 11
 	if err := exec.Command("auplink", target, "flush").Run(); err != nil {
11
-		utils.Errorf("[warning]: couldn't run auplink before unmount: %s", err)
12
+		log.Errorf("[warning]: couldn't run auplink before unmount: %s", err)
12 13
 	}
13 14
 	if err := syscall.Unmount(target, 0); err != nil {
14 15
 		return err
... ...
@@ -7,7 +7,7 @@ import (
7 7
 	"os"
8 8
 	"syscall"
9 9
 
10
-	"github.com/docker/docker/utils"
10
+	"github.com/docker/docker/pkg/log"
11 11
 )
12 12
 
13 13
 func stringToLoopName(src string) [LoNameSize]uint8 {
... ...
@@ -39,20 +39,20 @@ func openNextAvailableLoopback(index int, sparseFile *os.File) (loopFile *os.Fil
39 39
 		fi, err := os.Stat(target)
40 40
 		if err != nil {
41 41
 			if os.IsNotExist(err) {
42
-				utils.Errorf("There are no more loopback devices available.")
42
+				log.Errorf("There are no more loopback devices available.")
43 43
 			}
44 44
 			return nil, ErrAttachLoopbackDevice
45 45
 		}
46 46
 
47 47
 		if fi.Mode()&os.ModeDevice != os.ModeDevice {
48
-			utils.Errorf("Loopback device %s is not a block device.", target)
48
+			log.Errorf("Loopback device %s is not a block device.", target)
49 49
 			continue
50 50
 		}
51 51
 
52 52
 		// OpenFile adds O_CLOEXEC
53 53
 		loopFile, err = os.OpenFile(target, os.O_RDWR, 0644)
54 54
 		if err != nil {
55
-			utils.Errorf("Error openning loopback device: %s", err)
55
+			log.Errorf("Error openning loopback device: %s", err)
56 56
 			return nil, ErrAttachLoopbackDevice
57 57
 		}
58 58
 
... ...
@@ -62,7 +62,7 @@ func openNextAvailableLoopback(index int, sparseFile *os.File) (loopFile *os.Fil
62 62
 
63 63
 			// If the error is EBUSY, then try the next loopback
64 64
 			if err != syscall.EBUSY {
65
-				utils.Errorf("Cannot set up loopback device %s: %s", target, err)
65
+				log.Errorf("Cannot set up loopback device %s: %s", target, err)
66 66
 				return nil, ErrAttachLoopbackDevice
67 67
 			}
68 68
 
... ...
@@ -75,7 +75,7 @@ func openNextAvailableLoopback(index int, sparseFile *os.File) (loopFile *os.Fil
75 75
 
76 76
 	// This can't happen, but let's be sure
77 77
 	if loopFile == nil {
78
-		utils.Errorf("Unreachable code reached! Error attaching %s to a loopback device.", sparseFile.Name())
78
+		log.Errorf("Unreachable code reached! Error attaching %s to a loopback device.", sparseFile.Name())
79 79
 		return nil, ErrAttachLoopbackDevice
80 80
 	}
81 81
 
... ...
@@ -91,13 +91,13 @@ func attachLoopDevice(sparseName string) (loop *os.File, err error) {
91 91
 	// loopback from index 0.
92 92
 	startIndex, err := getNextFreeLoopbackIndex()
93 93
 	if err != nil {
94
-		utils.Debugf("Error retrieving the next available loopback: %s", err)
94
+		log.Debugf("Error retrieving the next available loopback: %s", err)
95 95
 	}
96 96
 
97 97
 	// OpenFile adds O_CLOEXEC
98 98
 	sparseFile, err := os.OpenFile(sparseName, os.O_RDWR, 0644)
99 99
 	if err != nil {
100
-		utils.Errorf("Error openning sparse file %s: %s", sparseName, err)
100
+		log.Errorf("Error openning sparse file %s: %s", sparseName, err)
101 101
 		return nil, ErrAttachLoopbackDevice
102 102
 	}
103 103
 	defer sparseFile.Close()
... ...
@@ -115,11 +115,11 @@ func attachLoopDevice(sparseName string) (loop *os.File, err error) {
115 115
 	}
116 116
 
117 117
 	if err := ioctlLoopSetStatus64(loopFile.Fd(), loopInfo); err != nil {
118
-		utils.Errorf("Cannot set up loopback device info: %s", err)
118
+		log.Errorf("Cannot set up loopback device info: %s", err)
119 119
 
120 120
 		// If the call failed, then free the loopback device
121 121
 		if err := ioctlLoopClrFd(loopFile.Fd()); err != nil {
122
-			utils.Errorf("Error while cleaning up the loopback device")
122
+			log.Errorf("Error while cleaning up the loopback device")
123 123
 		}
124 124
 		loopFile.Close()
125 125
 		return nil, ErrAttachLoopbackDevice
... ...
@@ -19,9 +19,9 @@ import (
19 19
 	"time"
20 20
 
21 21
 	"github.com/docker/docker/daemon/graphdriver"
22
+	"github.com/docker/docker/pkg/log"
22 23
 	"github.com/docker/docker/pkg/parsers"
23 24
 	"github.com/docker/docker/pkg/units"
24
-	"github.com/docker/docker/utils"
25 25
 	"github.com/docker/libcontainer/label"
26 26
 )
27 27
 
... ...
@@ -174,7 +174,7 @@ func (devices *DeviceSet) ensureImage(name string, size int64) (string, error) {
174 174
 		if !os.IsNotExist(err) {
175 175
 			return "", err
176 176
 		}
177
-		utils.Debugf("Creating loopback file %s for device-manage use", filename)
177
+		log.Debugf("Creating loopback file %s for device-manage use", filename)
178 178
 		file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0600)
179 179
 		if err != nil {
180 180
 			return "", err
... ...
@@ -252,7 +252,7 @@ func (devices *DeviceSet) lookupDevice(hash string) (*DevInfo, error) {
252 252
 }
253 253
 
254 254
 func (devices *DeviceSet) registerDevice(id int, hash string, size uint64) (*DevInfo, error) {
255
-	utils.Debugf("registerDevice(%v, %v)", id, hash)
255
+	log.Debugf("registerDevice(%v, %v)", id, hash)
256 256
 	info := &DevInfo{
257 257
 		Hash:          hash,
258 258
 		DeviceId:      id,
... ...
@@ -278,7 +278,7 @@ func (devices *DeviceSet) registerDevice(id int, hash string, size uint64) (*Dev
278 278
 }
279 279
 
280 280
 func (devices *DeviceSet) activateDeviceIfNeeded(info *DevInfo) error {
281
-	utils.Debugf("activateDeviceIfNeeded(%v)", info.Hash)
281
+	log.Debugf("activateDeviceIfNeeded(%v)", info.Hash)
282 282
 
283 283
 	if devinfo, _ := getInfo(info.Name()); devinfo != nil && devinfo.Exists != 0 {
284 284
 		return nil
... ...
@@ -385,13 +385,13 @@ func (devices *DeviceSet) setupBaseImage() error {
385 385
 	}
386 386
 
387 387
 	if oldInfo != nil && !oldInfo.Initialized {
388
-		utils.Debugf("Removing uninitialized base image")
388
+		log.Debugf("Removing uninitialized base image")
389 389
 		if err := devices.deleteDevice(oldInfo); err != nil {
390 390
 			return err
391 391
 		}
392 392
 	}
393 393
 
394
-	utils.Debugf("Initializing base device-manager snapshot")
394
+	log.Debugf("Initializing base device-manager snapshot")
395 395
 
396 396
 	id := devices.nextDeviceId
397 397
 
... ...
@@ -403,14 +403,14 @@ func (devices *DeviceSet) setupBaseImage() error {
403 403
 	// Ids are 24bit, so wrap around
404 404
 	devices.nextDeviceId = (id + 1) & 0xffffff
405 405
 
406
-	utils.Debugf("Registering base device (id %v) with FS size %v", id, devices.baseFsSize)
406
+	log.Debugf("Registering base device (id %v) with FS size %v", id, devices.baseFsSize)
407 407
 	info, err := devices.registerDevice(id, "", devices.baseFsSize)
408 408
 	if err != nil {
409 409
 		_ = deleteDevice(devices.getPoolDevName(), id)
410 410
 		return err
411 411
 	}
412 412
 
413
-	utils.Debugf("Creating filesystem on base device-manager snapshot")
413
+	log.Debugf("Creating filesystem on base device-manager snapshot")
414 414
 
415 415
 	if err = devices.activateDeviceIfNeeded(info); err != nil {
416 416
 		return err
... ...
@@ -448,7 +448,7 @@ func (devices *DeviceSet) log(level int, file string, line int, dmError int, mes
448 448
 		return // Ignore _LOG_DEBUG
449 449
 	}
450 450
 
451
-	utils.Debugf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message)
451
+	log.Debugf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message)
452 452
 }
453 453
 
454 454
 func major(device uint64) uint64 {
... ...
@@ -552,13 +552,13 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
552 552
 	//	- The target of this device is at major <maj> and minor <min>
553 553
 	//	- If <inode> is defined, use that file inside the device as a loopback image. Otherwise use the device itself.
554 554
 	devices.devicePrefix = fmt.Sprintf("docker-%d:%d-%d", major(sysSt.Dev), minor(sysSt.Dev), sysSt.Ino)
555
-	utils.Debugf("Generated prefix: %s", devices.devicePrefix)
555
+	log.Debugf("Generated prefix: %s", devices.devicePrefix)
556 556
 
557 557
 	// Check for the existence of the device <prefix>-pool
558
-	utils.Debugf("Checking for existence of the pool '%s'", devices.getPoolName())
558
+	log.Debugf("Checking for existence of the pool '%s'", devices.getPoolName())
559 559
 	info, err := getInfo(devices.getPoolName())
560 560
 	if info == nil {
561
-		utils.Debugf("Error device getInfo: %s", err)
561
+		log.Debugf("Error device getInfo: %s", err)
562 562
 		return err
563 563
 	}
564 564
 
... ...
@@ -574,7 +574,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
574 574
 
575 575
 	// If the pool doesn't exist, create it
576 576
 	if info.Exists == 0 {
577
-		utils.Debugf("Pool doesn't exist. Creating it.")
577
+		log.Debugf("Pool doesn't exist. Creating it.")
578 578
 
579 579
 		var (
580 580
 			dataFile     *os.File
... ...
@@ -596,7 +596,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
596 596
 
597 597
 			data, err := devices.ensureImage("data", devices.dataLoopbackSize)
598 598
 			if err != nil {
599
-				utils.Debugf("Error device ensureImage (data): %s\n", err)
599
+				log.Debugf("Error device ensureImage (data): %s\n", err)
600 600
 				return err
601 601
 			}
602 602
 
... ...
@@ -627,7 +627,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
627 627
 
628 628
 			metadata, err := devices.ensureImage("metadata", devices.metaDataLoopbackSize)
629 629
 			if err != nil {
630
-				utils.Debugf("Error device ensureImage (metadata): %s\n", err)
630
+				log.Debugf("Error device ensureImage (metadata): %s\n", err)
631 631
 				return err
632 632
 			}
633 633
 
... ...
@@ -659,7 +659,7 @@ func (devices *DeviceSet) initDevmapper(doInit bool) error {
659 659
 	// Setup the base image
660 660
 	if doInit {
661 661
 		if err := devices.setupBaseImage(); err != nil {
662
-			utils.Debugf("Error device setupBaseImage: %s\n", err)
662
+			log.Debugf("Error device setupBaseImage: %s\n", err)
663 663
 			return err
664 664
 		}
665 665
 	}
... ...
@@ -686,7 +686,7 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
686 686
 	deviceId := devices.nextDeviceId
687 687
 
688 688
 	if err := createSnapDevice(devices.getPoolDevName(), &deviceId, baseInfo.Name(), baseInfo.DeviceId); err != nil {
689
-		utils.Debugf("Error creating snap device: %s\n", err)
689
+		log.Debugf("Error creating snap device: %s\n", err)
690 690
 		return err
691 691
 	}
692 692
 
... ...
@@ -695,7 +695,7 @@ func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
695 695
 
696 696
 	if _, err := devices.registerDevice(deviceId, hash, baseInfo.Size); err != nil {
697 697
 		deleteDevice(devices.getPoolDevName(), deviceId)
698
-		utils.Debugf("Error registering device: %s\n", err)
698
+		log.Debugf("Error registering device: %s\n", err)
699 699
 		return err
700 700
 	}
701 701
 	return nil
... ...
@@ -708,7 +708,7 @@ func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
708 708
 		// manually
709 709
 		if err := devices.activateDeviceIfNeeded(info); err == nil {
710 710
 			if err := BlockDeviceDiscard(info.DevName()); err != nil {
711
-				utils.Debugf("Error discarding block on device: %s (ignoring)\n", err)
711
+				log.Debugf("Error discarding block on device: %s (ignoring)\n", err)
712 712
 			}
713 713
 		}
714 714
 	}
... ...
@@ -716,13 +716,13 @@ func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
716 716
 	devinfo, _ := getInfo(info.Name())
717 717
 	if devinfo != nil && devinfo.Exists != 0 {
718 718
 		if err := devices.removeDeviceAndWait(info.Name()); err != nil {
719
-			utils.Debugf("Error removing device: %s\n", err)
719
+			log.Debugf("Error removing device: %s\n", err)
720 720
 			return err
721 721
 		}
722 722
 	}
723 723
 
724 724
 	if err := deleteDevice(devices.getPoolDevName(), info.DeviceId); err != nil {
725
-		utils.Debugf("Error deleting device: %s\n", err)
725
+		log.Debugf("Error deleting device: %s\n", err)
726 726
 		return err
727 727
 	}
728 728
 
... ...
@@ -735,7 +735,7 @@ func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
735 735
 		devices.devicesLock.Lock()
736 736
 		devices.Devices[info.Hash] = info
737 737
 		devices.devicesLock.Unlock()
738
-		utils.Debugf("Error removing meta data: %s\n", err)
738
+		log.Debugf("Error removing meta data: %s\n", err)
739 739
 		return err
740 740
 	}
741 741
 
... ...
@@ -758,8 +758,8 @@ func (devices *DeviceSet) DeleteDevice(hash string) error {
758 758
 }
759 759
 
760 760
 func (devices *DeviceSet) deactivatePool() error {
761
-	utils.Debugf("[devmapper] deactivatePool()")
762
-	defer utils.Debugf("[devmapper] deactivatePool END")
761
+	log.Debugf("[devmapper] deactivatePool()")
762
+	defer log.Debugf("[devmapper] deactivatePool END")
763 763
 	devname := devices.getPoolDevName()
764 764
 	devinfo, err := getInfo(devname)
765 765
 	if err != nil {
... ...
@@ -773,13 +773,13 @@ func (devices *DeviceSet) deactivatePool() error {
773 773
 }
774 774
 
775 775
 func (devices *DeviceSet) deactivateDevice(info *DevInfo) error {
776
-	utils.Debugf("[devmapper] deactivateDevice(%s)", info.Hash)
777
-	defer utils.Debugf("[devmapper] deactivateDevice END")
776
+	log.Debugf("[devmapper] deactivateDevice(%s)", info.Hash)
777
+	defer log.Debugf("[devmapper] deactivateDevice END")
778 778
 
779 779
 	// Wait for the unmount to be effective,
780 780
 	// by watching the value of Info.OpenCount for the device
781 781
 	if err := devices.waitClose(info); err != nil {
782
-		utils.Errorf("Warning: error waiting for device %s to close: %s\n", info.Hash, err)
782
+		log.Errorf("Warning: error waiting for device %s to close: %s\n", info.Hash, err)
783 783
 	}
784 784
 
785 785
 	devinfo, err := getInfo(info.Name())
... ...
@@ -829,8 +829,8 @@ func (devices *DeviceSet) removeDeviceAndWait(devname string) error {
829 829
 // a) the device registered at <device_set_prefix>-<hash> is removed,
830 830
 // or b) the 10 second timeout expires.
831 831
 func (devices *DeviceSet) waitRemove(devname string) error {
832
-	utils.Debugf("[deviceset %s] waitRemove(%s)", devices.devicePrefix, devname)
833
-	defer utils.Debugf("[deviceset %s] waitRemove(%s) END", devices.devicePrefix, devname)
832
+	log.Debugf("[deviceset %s] waitRemove(%s)", devices.devicePrefix, devname)
833
+	defer log.Debugf("[deviceset %s] waitRemove(%s) END", devices.devicePrefix, devname)
834 834
 	i := 0
835 835
 	for ; i < 1000; i += 1 {
836 836
 		devinfo, err := getInfo(devname)
... ...
@@ -840,7 +840,7 @@ func (devices *DeviceSet) waitRemove(devname string) error {
840 840
 			return nil
841 841
 		}
842 842
 		if i%100 == 0 {
843
-			utils.Debugf("Waiting for removal of %s: exists=%d", devname, devinfo.Exists)
843
+			log.Debugf("Waiting for removal of %s: exists=%d", devname, devinfo.Exists)
844 844
 		}
845 845
 		if devinfo.Exists == 0 {
846 846
 			break
... ...
@@ -867,7 +867,7 @@ func (devices *DeviceSet) waitClose(info *DevInfo) error {
867 867
 			return err
868 868
 		}
869 869
 		if i%100 == 0 {
870
-			utils.Debugf("Waiting for unmount of %s: opencount=%d", info.Hash, devinfo.OpenCount)
870
+			log.Debugf("Waiting for unmount of %s: opencount=%d", info.Hash, devinfo.OpenCount)
871 871
 		}
872 872
 		if devinfo.OpenCount == 0 {
873 873
 			break
... ...
@@ -884,9 +884,9 @@ func (devices *DeviceSet) waitClose(info *DevInfo) error {
884 884
 
885 885
 func (devices *DeviceSet) Shutdown() error {
886 886
 
887
-	utils.Debugf("[deviceset %s] shutdown()", devices.devicePrefix)
888
-	utils.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
889
-	defer utils.Debugf("[deviceset %s] shutdown END", devices.devicePrefix)
887
+	log.Debugf("[deviceset %s] shutdown()", devices.devicePrefix)
888
+	log.Debugf("[devmapper] Shutting down DeviceSet: %s", devices.root)
889
+	defer log.Debugf("[deviceset %s] shutdown END", devices.devicePrefix)
890 890
 
891 891
 	var devs []*DevInfo
892 892
 
... ...
@@ -903,12 +903,12 @@ func (devices *DeviceSet) Shutdown() error {
903 903
 			// container. This means it'll go away from the global scope directly,
904 904
 			// and the device will be released when that container dies.
905 905
 			if err := syscall.Unmount(info.mountPath, syscall.MNT_DETACH); err != nil {
906
-				utils.Debugf("Shutdown unmounting %s, error: %s\n", info.mountPath, err)
906
+				log.Debugf("Shutdown unmounting %s, error: %s\n", info.mountPath, err)
907 907
 			}
908 908
 
909 909
 			devices.Lock()
910 910
 			if err := devices.deactivateDevice(info); err != nil {
911
-				utils.Debugf("Shutdown deactivate %s , error: %s\n", info.Hash, err)
911
+				log.Debugf("Shutdown deactivate %s , error: %s\n", info.Hash, err)
912 912
 			}
913 913
 			devices.Unlock()
914 914
 		}
... ...
@@ -920,7 +920,7 @@ func (devices *DeviceSet) Shutdown() error {
920 920
 		info.lock.Lock()
921 921
 		devices.Lock()
922 922
 		if err := devices.deactivateDevice(info); err != nil {
923
-			utils.Debugf("Shutdown deactivate base , error: %s\n", err)
923
+			log.Debugf("Shutdown deactivate base , error: %s\n", err)
924 924
 		}
925 925
 		devices.Unlock()
926 926
 		info.lock.Unlock()
... ...
@@ -928,7 +928,7 @@ func (devices *DeviceSet) Shutdown() error {
928 928
 
929 929
 	devices.Lock()
930 930
 	if err := devices.deactivatePool(); err != nil {
931
-		utils.Debugf("Shutdown deactivate pool , error: %s\n", err)
931
+		log.Debugf("Shutdown deactivate pool , error: %s\n", err)
932 932
 	}
933 933
 	devices.Unlock()
934 934
 
... ...
@@ -992,8 +992,8 @@ func (devices *DeviceSet) MountDevice(hash, path, mountLabel string) error {
992 992
 }
993 993
 
994 994
 func (devices *DeviceSet) UnmountDevice(hash string) error {
995
-	utils.Debugf("[devmapper] UnmountDevice(hash=%s)", hash)
996
-	defer utils.Debugf("[devmapper] UnmountDevice END")
995
+	log.Debugf("[devmapper] UnmountDevice(hash=%s)", hash)
996
+	defer log.Debugf("[devmapper] UnmountDevice END")
997 997
 
998 998
 	info, err := devices.lookupDevice(hash)
999 999
 	if err != nil {
... ...
@@ -1015,11 +1015,11 @@ func (devices *DeviceSet) UnmountDevice(hash string) error {
1015 1015
 		return nil
1016 1016
 	}
1017 1017
 
1018
-	utils.Debugf("[devmapper] Unmount(%s)", info.mountPath)
1018
+	log.Debugf("[devmapper] Unmount(%s)", info.mountPath)
1019 1019
 	if err := syscall.Unmount(info.mountPath, 0); err != nil {
1020 1020
 		return err
1021 1021
 	}
1022
-	utils.Debugf("[devmapper] Unmount done")
1022
+	log.Debugf("[devmapper] Unmount done")
1023 1023
 
1024 1024
 	if err := devices.deactivateDevice(info); err != nil {
1025 1025
 		return err
... ...
@@ -9,7 +9,7 @@ import (
9 9
 	"runtime"
10 10
 	"syscall"
11 11
 
12
-	"github.com/docker/docker/utils"
12
+	"github.com/docker/docker/pkg/log"
13 13
 )
14 14
 
15 15
 type DevmapperLogger interface {
... ...
@@ -198,7 +198,7 @@ func (t *Task) GetNextTarget(next uintptr) (nextPtr uintptr, start uint64,
198 198
 func getLoopbackBackingFile(file *os.File) (uint64, uint64, error) {
199 199
 	loopInfo, err := ioctlLoopGetStatus64(file.Fd())
200 200
 	if err != nil {
201
-		utils.Errorf("Error get loopback backing file: %s\n", err)
201
+		log.Errorf("Error get loopback backing file: %s\n", err)
202 202
 		return 0, 0, ErrGetLoopbackBackingFile
203 203
 	}
204 204
 	return loopInfo.loDevice, loopInfo.loInode, nil
... ...
@@ -206,7 +206,7 @@ func getLoopbackBackingFile(file *os.File) (uint64, uint64, error) {
206 206
 
207 207
 func LoopbackSetCapacity(file *os.File) error {
208 208
 	if err := ioctlLoopSetCapacity(file.Fd(), 0); err != nil {
209
-		utils.Errorf("Error loopbackSetCapacity: %s", err)
209
+		log.Errorf("Error loopbackSetCapacity: %s", err)
210 210
 		return ErrLoopbackSetCapacity
211 211
 	}
212 212
 	return nil
... ...
@@ -246,7 +246,7 @@ func FindLoopDeviceFor(file *os.File) *os.File {
246 246
 
247 247
 func UdevWait(cookie uint) error {
248 248
 	if res := DmUdevWait(cookie); res != 1 {
249
-		utils.Debugf("Failed to wait on udev cookie %d", cookie)
249
+		log.Debugf("Failed to wait on udev cookie %d", cookie)
250 250
 		return ErrUdevWait
251 251
 	}
252 252
 	return nil
... ...
@@ -265,7 +265,7 @@ func logInit(logger DevmapperLogger) {
265 265
 
266 266
 func SetDevDir(dir string) error {
267 267
 	if res := DmSetDevDir(dir); res != 1 {
268
-		utils.Debugf("Error dm_set_dev_dir")
268
+		log.Debugf("Error dm_set_dev_dir")
269 269
 		return ErrSetDevDir
270 270
 	}
271 271
 	return nil
... ...
@@ -286,7 +286,7 @@ func RemoveDevice(name string) error {
286 286
 		return ErrCreateRemoveTask
287 287
 	}
288 288
 	if err := task.SetName(name); err != nil {
289
-		utils.Debugf("Can't set task name %s", name)
289
+		log.Debugf("Can't set task name %s", name)
290 290
 		return err
291 291
 	}
292 292
 	if err := task.Run(); err != nil {
... ...
@@ -298,7 +298,7 @@ func RemoveDevice(name string) error {
298 298
 func GetBlockDeviceSize(file *os.File) (uint64, error) {
299 299
 	size, err := ioctlBlkGetSize64(file.Fd())
300 300
 	if err != nil {
301
-		utils.Errorf("Error getblockdevicesize: %s", err)
301
+		log.Errorf("Error getblockdevicesize: %s", err)
302 302
 		return 0, ErrGetBlockSize
303 303
 	}
304 304
 	return uint64(size), nil
... ...
@@ -417,21 +417,21 @@ func getDriverVersion() (string, error) {
417 417
 func getStatus(name string) (uint64, uint64, string, string, error) {
418 418
 	task, err := createTask(DeviceStatus, name)
419 419
 	if task == nil {
420
-		utils.Debugf("getStatus: Error createTask: %s", err)
420
+		log.Debugf("getStatus: Error createTask: %s", err)
421 421
 		return 0, 0, "", "", err
422 422
 	}
423 423
 	if err := task.Run(); err != nil {
424
-		utils.Debugf("getStatus: Error Run: %s", err)
424
+		log.Debugf("getStatus: Error Run: %s", err)
425 425
 		return 0, 0, "", "", err
426 426
 	}
427 427
 
428 428
 	devinfo, err := task.GetInfo()
429 429
 	if err != nil {
430
-		utils.Debugf("getStatus: Error GetInfo: %s", err)
430
+		log.Debugf("getStatus: Error GetInfo: %s", err)
431 431
 		return 0, 0, "", "", err
432 432
 	}
433 433
 	if devinfo.Exists == 0 {
434
-		utils.Debugf("getStatus: Non existing device %s", name)
434
+		log.Debugf("getStatus: Non existing device %s", name)
435 435
 		return 0, 0, "", "", fmt.Errorf("Non existing device %s", name)
436 436
 	}
437 437
 
... ...
@@ -491,7 +491,7 @@ func resumeDevice(name string) error {
491 491
 }
492 492
 
493 493
 func createDevice(poolName string, deviceId *int) error {
494
-	utils.Debugf("[devmapper] createDevice(poolName=%v, deviceId=%v)", poolName, *deviceId)
494
+	log.Debugf("[devmapper] createDevice(poolName=%v, deviceId=%v)", poolName, *deviceId)
495 495
 
496 496
 	for {
497 497
 		task, err := createTask(DeviceTargetMsg, poolName)
... ...
@@ -542,8 +542,8 @@ func deleteDevice(poolName string, deviceId int) error {
542 542
 }
543 543
 
544 544
 func removeDevice(name string) error {
545
-	utils.Debugf("[devmapper] removeDevice START")
546
-	defer utils.Debugf("[devmapper] removeDevice END")
545
+	log.Debugf("[devmapper] removeDevice START")
546
+	defer log.Debugf("[devmapper] removeDevice END")
547 547
 	task, err := createTask(DeviceRemove, name)
548 548
 	if task == nil {
549 549
 		return err
... ...
@@ -9,8 +9,8 @@ import (
9 9
 	"path"
10 10
 
11 11
 	"github.com/docker/docker/daemon/graphdriver"
12
+	"github.com/docker/docker/pkg/log"
12 13
 	"github.com/docker/docker/pkg/mount"
13
-	"github.com/docker/docker/utils"
14 14
 )
15 15
 
16 16
 func init() {
... ...
@@ -138,7 +138,7 @@ func (d *Driver) Get(id, mountLabel string) (string, error) {
138 138
 
139 139
 func (d *Driver) Put(id string) {
140 140
 	if err := d.DeviceSet.UnmountDevice(id); err != nil {
141
-		utils.Errorf("Warning: error unmounting device %s: %s\n", id, err)
141
+		log.Errorf("Warning: error unmounting device %s: %s\n", id, err)
142 142
 	}
143 143
 }
144 144
 
... ...
@@ -6,6 +6,7 @@ import (
6 6
 
7 7
 	"github.com/docker/docker/dockerversion"
8 8
 	"github.com/docker/docker/engine"
9
+	"github.com/docker/docker/pkg/log"
9 10
 	"github.com/docker/docker/pkg/parsers/kernel"
10 11
 	"github.com/docker/docker/pkg/parsers/operatingsystem"
11 12
 	"github.com/docker/docker/registry"
... ...
@@ -30,7 +31,7 @@ func (daemon *Daemon) CmdInfo(job *engine.Job) engine.Status {
30 30
 		operatingSystem = s
31 31
 	}
32 32
 	if inContainer, err := operatingsystem.IsContainerized(); err != nil {
33
-		utils.Errorf("Could not determine if daemon is containerized: %v", err)
33
+		log.Errorf("Could not determine if daemon is containerized: %v", err)
34 34
 		operatingSystem += " (error determining if containerized)"
35 35
 	} else if inContainer {
36 36
 		operatingSystem += " (containerized)"
... ...
@@ -9,11 +9,11 @@ import (
9 9
 	"strconv"
10 10
 	"time"
11 11
 
12
+	"github.com/docker/docker/pkg/log"
12 13
 	"github.com/docker/docker/pkg/tailfile"
13 14
 
14 15
 	"github.com/docker/docker/engine"
15 16
 	"github.com/docker/docker/pkg/jsonlog"
16
-	"github.com/docker/docker/utils"
17 17
 )
18 18
 
19 19
 func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
... ...
@@ -47,31 +47,31 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
47 47
 	cLog, err := container.ReadLog("json")
48 48
 	if err != nil && os.IsNotExist(err) {
49 49
 		// Legacy logs
50
-		utils.Debugf("Old logs format")
50
+		log.Debugf("Old logs format")
51 51
 		if stdout {
52 52
 			cLog, err := container.ReadLog("stdout")
53 53
 			if err != nil {
54
-				utils.Errorf("Error reading logs (stdout): %s", err)
54
+				log.Errorf("Error reading logs (stdout): %s", err)
55 55
 			} else if _, err := io.Copy(job.Stdout, cLog); err != nil {
56
-				utils.Errorf("Error streaming logs (stdout): %s", err)
56
+				log.Errorf("Error streaming logs (stdout): %s", err)
57 57
 			}
58 58
 		}
59 59
 		if stderr {
60 60
 			cLog, err := container.ReadLog("stderr")
61 61
 			if err != nil {
62
-				utils.Errorf("Error reading logs (stderr): %s", err)
62
+				log.Errorf("Error reading logs (stderr): %s", err)
63 63
 			} else if _, err := io.Copy(job.Stderr, cLog); err != nil {
64
-				utils.Errorf("Error streaming logs (stderr): %s", err)
64
+				log.Errorf("Error streaming logs (stderr): %s", err)
65 65
 			}
66 66
 		}
67 67
 	} else if err != nil {
68
-		utils.Errorf("Error reading logs (json): %s", err)
68
+		log.Errorf("Error reading logs (json): %s", err)
69 69
 	} else {
70 70
 		if tail != "all" {
71 71
 			var err error
72 72
 			lines, err = strconv.Atoi(tail)
73 73
 			if err != nil {
74
-				utils.Errorf("Failed to parse tail %s, error: %v, show all logs", tail, err)
74
+				log.Errorf("Failed to parse tail %s, error: %v, show all logs", tail, err)
75 75
 				lines = -1
76 76
 			}
77 77
 		}
... ...
@@ -95,7 +95,7 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
95 95
 				if err := dec.Decode(l); err == io.EOF {
96 96
 					break
97 97
 				} else if err != nil {
98
-					utils.Errorf("Error streaming logs: %s", err)
98
+					log.Errorf("Error streaming logs: %s", err)
99 99
 					break
100 100
 				}
101 101
 				logLine := l.Log
... ...
@@ -127,7 +127,7 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
127 127
 		}
128 128
 		err := <-errors
129 129
 		if err != nil {
130
-			utils.Errorf("%s", err)
130
+			log.Errorf("%s", err)
131 131
 		}
132 132
 	}
133 133
 	return engine.StatusOK
... ...
@@ -3,7 +3,6 @@ package bridge
3 3
 import (
4 4
 	"fmt"
5 5
 	"io/ioutil"
6
-	"log"
7 6
 	"net"
8 7
 	"strings"
9 8
 	"sync"
... ...
@@ -14,9 +13,9 @@ import (
14 14
 	"github.com/docker/docker/daemon/networkdriver/portmapper"
15 15
 	"github.com/docker/docker/engine"
16 16
 	"github.com/docker/docker/pkg/iptables"
17
+	"github.com/docker/docker/pkg/log"
17 18
 	"github.com/docker/docker/pkg/networkfs/resolvconf"
18 19
 	"github.com/docker/docker/pkg/parsers/kernel"
19
-	"github.com/docker/docker/utils"
20 20
 	"github.com/docker/libcontainer/netlink"
21 21
 )
22 22
 
... ...
@@ -197,7 +196,7 @@ func setupIPTables(addr net.Addr, icc bool) error {
197 197
 		iptables.Raw(append([]string{"-D"}, acceptArgs...)...)
198 198
 
199 199
 		if !iptables.Exists(dropArgs...) {
200
-			utils.Debugf("Disable inter-container communication")
200
+			log.Debugf("Disable inter-container communication")
201 201
 			if output, err := iptables.Raw(append([]string{"-I"}, dropArgs...)...); err != nil {
202 202
 				return fmt.Errorf("Unable to prevent intercontainer communication: %s", err)
203 203
 			} else if len(output) != 0 {
... ...
@@ -208,7 +207,7 @@ func setupIPTables(addr net.Addr, icc bool) error {
208 208
 		iptables.Raw(append([]string{"-D"}, dropArgs...)...)
209 209
 
210 210
 		if !iptables.Exists(acceptArgs...) {
211
-			utils.Debugf("Enable inter-container communication")
211
+			log.Debugf("Enable inter-container communication")
212 212
 			if output, err := iptables.Raw(append([]string{"-I"}, acceptArgs...)...); err != nil {
213 213
 				return fmt.Errorf("Unable to allow intercontainer communication: %s", err)
214 214
 			} else if len(output) != 0 {
... ...
@@ -272,7 +271,7 @@ func createBridge(bridgeIP string) error {
272 272
 					ifaceAddr = addr
273 273
 					break
274 274
 				} else {
275
-					utils.Debugf("%s %s", addr, err)
275
+					log.Debugf("%s %s", addr, err)
276 276
 				}
277 277
 			}
278 278
 		}
... ...
@@ -281,7 +280,7 @@ func createBridge(bridgeIP string) error {
281 281
 	if ifaceAddr == "" {
282 282
 		return fmt.Errorf("Could not find a free IP address range for interface '%s'. Please configure its address manually and run 'docker -b %s'", bridgeIface, bridgeIface)
283 283
 	}
284
-	utils.Debugf("Creating bridge %s with network %s", bridgeIface, ifaceAddr)
284
+	log.Debugf("Creating bridge %s with network %s", bridgeIface, ifaceAddr)
285 285
 
286 286
 	if err := createBridgeIface(bridgeIface); err != nil {
287 287
 		return err
... ...
@@ -311,7 +310,7 @@ func createBridgeIface(name string) error {
311 311
 	// only set the bridge's mac address if the kernel version is > 3.3
312 312
 	// before that it was not supported
313 313
 	setBridgeMacAddr := err == nil && (kv.Kernel >= 3 && kv.Major >= 3)
314
-	utils.Debugf("setting bridge mac address = %v", setBridgeMacAddr)
314
+	log.Debugf("setting bridge mac address = %v", setBridgeMacAddr)
315 315
 	return netlink.CreateBridge(name, setBridgeMacAddr)
316 316
 }
317 317
 
... ...
@@ -364,12 +363,12 @@ func Release(job *engine.Job) engine.Status {
364 364
 
365 365
 	for _, nat := range containerInterface.PortMappings {
366 366
 		if err := portmapper.Unmap(nat); err != nil {
367
-			log.Printf("Unable to unmap port %s: %s", nat, err)
367
+			log.Infof("Unable to unmap port %s: %s", nat, err)
368 368
 		}
369 369
 	}
370 370
 
371 371
 	if err := ipallocator.ReleaseIP(bridgeNetwork, &containerInterface.IP); err != nil {
372
-		log.Printf("Unable to release ip %s\n", err)
372
+		log.Infof("Unable to release ip %s\n", err)
373 373
 	}
374 374
 	return engine.StatusOK
375 375
 }
... ...
@@ -9,8 +9,8 @@ import (
9 9
 
10 10
 	"github.com/docker/docker/archive"
11 11
 	"github.com/docker/docker/engine"
12
+	"github.com/docker/docker/pkg/log"
12 13
 	"github.com/docker/docker/pkg/parsers"
13
-	"github.com/docker/docker/utils"
14 14
 )
15 15
 
16 16
 // CmdImageExport exports all images with the given tag. All versions
... ...
@@ -30,7 +30,7 @@ func (s *TagStore) CmdImageExport(job *engine.Job) engine.Status {
30 30
 	}
31 31
 	defer os.RemoveAll(tempdir)
32 32
 
33
-	utils.Debugf("Serializing %s", name)
33
+	log.Debugf("Serializing %s", name)
34 34
 
35 35
 	rootRepoMap := map[string]Repository{}
36 36
 	rootRepo, err := s.Get(name)
... ...
@@ -77,7 +77,7 @@ func (s *TagStore) CmdImageExport(job *engine.Job) engine.Status {
77 77
 			return job.Error(err)
78 78
 		}
79 79
 	} else {
80
-		utils.Debugf("There were no repositories to write")
80
+		log.Debugf("There were no repositories to write")
81 81
 	}
82 82
 
83 83
 	fs, err := archive.Tar(tempdir, archive.Uncompressed)
... ...
@@ -89,7 +89,7 @@ func (s *TagStore) CmdImageExport(job *engine.Job) engine.Status {
89 89
 	if _, err := io.Copy(job.Stdout, fs); err != nil {
90 90
 		return job.Error(err)
91 91
 	}
92
-	utils.Debugf("End Serializing %s", name)
92
+	log.Debugf("End Serializing %s", name)
93 93
 	return engine.StatusOK
94 94
 }
95 95
 
... ...
@@ -16,6 +16,7 @@ import (
16 16
 	"github.com/docker/docker/daemon/graphdriver"
17 17
 	"github.com/docker/docker/dockerversion"
18 18
 	"github.com/docker/docker/image"
19
+	"github.com/docker/docker/pkg/log"
19 20
 	"github.com/docker/docker/pkg/truncindex"
20 21
 	"github.com/docker/docker/runconfig"
21 22
 	"github.com/docker/docker/utils"
... ...
@@ -64,7 +65,7 @@ func (graph *Graph) restore() error {
64 64
 		}
65 65
 	}
66 66
 	graph.idIndex = truncindex.NewTruncIndex(ids)
67
-	utils.Debugf("Restored %d elements", len(dir))
67
+	log.Debugf("Restored %d elements", len(dir))
68 68
 	return nil
69 69
 }
70 70
 
... ...
@@ -10,7 +10,7 @@ import (
10 10
 	"github.com/docker/docker/archive"
11 11
 	"github.com/docker/docker/engine"
12 12
 	"github.com/docker/docker/image"
13
-	"github.com/docker/docker/utils"
13
+	"github.com/docker/docker/pkg/log"
14 14
 )
15 15
 
16 16
 // Loads a set of images into the repository. This is the complementary of ImageExport.
... ...
@@ -93,22 +93,22 @@ func (s *TagStore) CmdLoad(job *engine.Job) engine.Status {
93 93
 
94 94
 func (s *TagStore) recursiveLoad(eng *engine.Engine, address, tmpImageDir string) error {
95 95
 	if err := eng.Job("image_get", address).Run(); err != nil {
96
-		utils.Debugf("Loading %s", address)
96
+		log.Debugf("Loading %s", address)
97 97
 
98 98
 		imageJson, err := ioutil.ReadFile(path.Join(tmpImageDir, "repo", address, "json"))
99 99
 		if err != nil {
100
-			utils.Debugf("Error reading json", err)
100
+			log.Debugf("Error reading json", err)
101 101
 			return err
102 102
 		}
103 103
 
104 104
 		layer, err := os.Open(path.Join(tmpImageDir, "repo", address, "layer.tar"))
105 105
 		if err != nil {
106
-			utils.Debugf("Error reading embedded tar", err)
106
+			log.Debugf("Error reading embedded tar", err)
107 107
 			return err
108 108
 		}
109 109
 		img, err := image.NewImgJSON(imageJson)
110 110
 		if err != nil {
111
-			utils.Debugf("Error unmarshalling json", err)
111
+			log.Debugf("Error unmarshalling json", err)
112 112
 			return err
113 113
 		}
114 114
 		if img.Parent != "" {
... ...
@@ -122,7 +122,7 @@ func (s *TagStore) recursiveLoad(eng *engine.Engine, address, tmpImageDir string
122 122
 			return err
123 123
 		}
124 124
 	}
125
-	utils.Debugf("Completed processing %s", address)
125
+	log.Debugf("Completed processing %s", address)
126 126
 
127 127
 	return nil
128 128
 }
... ...
@@ -10,6 +10,7 @@ import (
10 10
 
11 11
 	"github.com/docker/docker/engine"
12 12
 	"github.com/docker/docker/image"
13
+	"github.com/docker/docker/pkg/log"
13 14
 	"github.com/docker/docker/registry"
14 15
 	"github.com/docker/docker/utils"
15 16
 )
... ...
@@ -85,10 +86,10 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
85 85
 		}
86 86
 	}
87 87
 
88
-	utils.Debugf("Retrieving the tag list")
88
+	log.Debugf("Retrieving the tag list")
89 89
 	tagsList, err := r.GetRemoteTags(repoData.Endpoints, remoteName, repoData.Tokens)
90 90
 	if err != nil {
91
-		utils.Errorf("%v", err)
91
+		log.Errorf("%v", err)
92 92
 		return err
93 93
 	}
94 94
 
... ...
@@ -100,7 +101,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
100 100
 		}
101 101
 	}
102 102
 
103
-	utils.Debugf("Registering tags")
103
+	log.Debugf("Registering tags")
104 104
 	// If no tag has been specified, pull them all
105 105
 	if askedTag == "" {
106 106
 		for tag, id := range tagsList {
... ...
@@ -119,7 +120,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
119 119
 	for _, image := range repoData.ImgList {
120 120
 		downloadImage := func(img *registry.ImgData) {
121 121
 			if askedTag != "" && img.Tag != askedTag {
122
-				utils.Debugf("(%s) does not match %s (id: %s), skipping", img.Tag, askedTag, img.ID)
122
+				log.Debugf("(%s) does not match %s (id: %s), skipping", img.Tag, askedTag, img.ID)
123 123
 				if parallel {
124 124
 					errors <- nil
125 125
 				}
... ...
@@ -127,7 +128,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
127 127
 			}
128 128
 
129 129
 			if img.Tag == "" {
130
-				utils.Debugf("Image (id: %s) present in this repository but untagged, skipping", img.ID)
130
+				log.Debugf("Image (id: %s) present in this repository but untagged, skipping", img.ID)
131 131
 				if parallel {
132 132
 					errors <- nil
133 133
 				}
... ...
@@ -141,7 +142,7 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, localName,
141 141
 					<-c
142 142
 					out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Download complete", nil))
143 143
 				} else {
144
-					utils.Debugf("Image (id: %s) pull is already running, skipping: %v", img.ID, err)
144
+					log.Debugf("Image (id: %s) pull is already running, skipping: %v", img.ID, err)
145 145
 				}
146 146
 				if parallel {
147 147
 					errors <- nil
... ...
@@ -224,7 +225,7 @@ func (s *TagStore) pullImage(r *registry.Session, out io.Writer, imgID, endpoint
224 224
 
225 225
 		// ensure no two downloads of the same layer happen at the same time
226 226
 		if c, err := s.poolAdd("pull", "layer:"+id); err != nil {
227
-			utils.Debugf("Image (id: %s) pull is already running, skipping: %v", id, err)
227
+			log.Debugf("Image (id: %s) pull is already running, skipping: %v", id, err)
228 228
 			<-c
229 229
 		}
230 230
 		defer s.poolRemove("pull", "layer:"+id)
... ...
@@ -9,6 +9,7 @@ import (
9 9
 
10 10
 	"github.com/docker/docker/archive"
11 11
 	"github.com/docker/docker/engine"
12
+	"github.com/docker/docker/pkg/log"
12 13
 	"github.com/docker/docker/registry"
13 14
 	"github.com/docker/docker/utils"
14 15
 )
... ...
@@ -54,15 +55,15 @@ func (s *TagStore) getImageList(localRepo map[string]string, requestedTag string
54 54
 	if len(imageList) == 0 {
55 55
 		return nil, nil, fmt.Errorf("No images found for the requested repository / tag")
56 56
 	}
57
-	utils.Debugf("Image list: %v", imageList)
58
-	utils.Debugf("Tags by image: %v", tagsByImage)
57
+	log.Debugf("Image list: %v", imageList)
58
+	log.Debugf("Tags by image: %v", tagsByImage)
59 59
 
60 60
 	return imageList, tagsByImage, nil
61 61
 }
62 62
 
63 63
 func (s *TagStore) pushRepository(r *registry.Session, out io.Writer, localName, remoteName string, localRepo map[string]string, tag string, sf *utils.StreamFormatter) error {
64 64
 	out = utils.NewWriteFlusher(out)
65
-	utils.Debugf("Local repo: %s", localRepo)
65
+	log.Debugf("Local repo: %s", localRepo)
66 66
 	imgList, tagsByImage, err := s.getImageList(localRepo, tag)
67 67
 	if err != nil {
68 68
 		return err
... ...
@@ -96,9 +97,9 @@ func (s *TagStore) pushRepository(r *registry.Session, out io.Writer, localName,
96 96
 		}
97 97
 	}
98 98
 
99
-	utils.Debugf("Preparing to push %s with the following images and tags\n", localRepo)
99
+	log.Debugf("Preparing to push %s with the following images and tags\n", localRepo)
100 100
 	for _, data := range imageIndex {
101
-		utils.Debugf("Pushing ID: %s with Tag: %s\n", data.ID, data.Tag)
101
+		log.Debugf("Pushing ID: %s with Tag: %s\n", data.ID, data.Tag)
102 102
 	}
103 103
 
104 104
 	// Register all the images in a repository with the registry
... ...
@@ -170,7 +171,7 @@ func (s *TagStore) pushImage(r *registry.Session, out io.Writer, remote, imgID,
170 170
 	defer os.RemoveAll(layerData.Name())
171 171
 
172 172
 	// Send the layer
173
-	utils.Debugf("rendered layer for %s of [%d] size", imgData.ID, layerData.Size)
173
+	log.Debugf("rendered layer for %s of [%d] size", imgData.ID, layerData.Size)
174 174
 
175 175
 	checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing"), ep, token, jsonRaw)
176 176
 	if err != nil {
... ...
@@ -6,7 +6,7 @@ import (
6 6
 
7 7
 	"github.com/docker/docker/engine"
8 8
 	"github.com/docker/docker/image"
9
-	"github.com/docker/docker/utils"
9
+	"github.com/docker/docker/pkg/log"
10 10
 )
11 11
 
12 12
 func (s *TagStore) Install(eng *engine.Engine) error {
... ...
@@ -173,7 +173,7 @@ func (s *TagStore) CmdTarLayer(job *engine.Job) engine.Status {
173 173
 		if written, err := io.Copy(job.Stdout, fs); err != nil {
174 174
 			return job.Error(err)
175 175
 		} else {
176
-			utils.Debugf("rendered layer for %s of [%d] size", image.ID, written)
176
+			log.Debugf("rendered layer for %s of [%d] size", image.ID, written)
177 177
 		}
178 178
 
179 179
 		return engine.StatusOK
... ...
@@ -3,15 +3,17 @@ package image
3 3
 import (
4 4
 	"encoding/json"
5 5
 	"fmt"
6
-	"github.com/docker/docker/archive"
7
-	"github.com/docker/docker/daemon/graphdriver"
8
-	"github.com/docker/docker/runconfig"
9
-	"github.com/docker/docker/utils"
10 6
 	"io/ioutil"
11 7
 	"os"
12 8
 	"path"
13 9
 	"strconv"
14 10
 	"time"
11
+
12
+	"github.com/docker/docker/archive"
13
+	"github.com/docker/docker/daemon/graphdriver"
14
+	"github.com/docker/docker/pkg/log"
15
+	"github.com/docker/docker/runconfig"
16
+	"github.com/docker/docker/utils"
15 17
 )
16 18
 
17 19
 type Image struct {
... ...
@@ -87,11 +89,11 @@ func StoreImage(img *Image, jsonData []byte, layerData archive.ArchiveReader, ro
87 87
 			}
88 88
 		} else {
89 89
 			start := time.Now().UTC()
90
-			utils.Debugf("Start untar layer")
90
+			log.Debugf("Start untar layer")
91 91
 			if err := archive.ApplyLayer(layer, layerData); err != nil {
92 92
 				return err
93 93
 			}
94
-			utils.Debugf("Untar time: %vs", time.Now().UTC().Sub(start).Seconds())
94
+			log.Debugf("Untar time: %vs", time.Now().UTC().Sub(start).Seconds())
95 95
 
96 96
 			if img.Parent == "" {
97 97
 				if size, err = utils.TreeSize(layer); err != nil {
... ...
@@ -299,7 +301,7 @@ func (img *Image) Depth() (int, error) {
299 299
 func NewImgJSON(src []byte) (*Image, error) {
300 300
 	ret := &Image{}
301 301
 
302
-	utils.Debugf("Json string: {%s}", src)
302
+	log.Debugf("Json string: {%s}", src)
303 303
 	// FIXME: Is there a cleaner way to "purify" the input json?
304 304
 	if err := json.Unmarshal(src, ret); err != nil {
305 305
 		return nil, err
... ...
@@ -13,6 +13,7 @@ import (
13 13
 
14 14
 	"github.com/docker/docker/api/client"
15 15
 	"github.com/docker/docker/daemon"
16
+	"github.com/docker/docker/pkg/log"
16 17
 	"github.com/docker/docker/pkg/term"
17 18
 	"github.com/docker/docker/utils"
18 19
 )
... ...
@@ -174,7 +175,7 @@ func TestRunDisconnectTty(t *testing.T) {
174 174
 		// We're simulating a disconnect so the return value doesn't matter. What matters is the
175 175
 		// fact that CmdRun returns.
176 176
 		if err := cli.CmdRun("-i", "-t", unitTestImageID, "/bin/cat"); err != nil {
177
-			utils.Debugf("Error CmdRun: %s", err)
177
+			log.Debugf("Error CmdRun: %s", err)
178 178
 		}
179 179
 	}()
180 180
 
... ...
@@ -414,7 +415,7 @@ func TestAttachDisconnect(t *testing.T) {
414 414
 	go func() {
415 415
 		// Start a process in daemon mode
416 416
 		if err := cli.CmdRun("-d", "-i", unitTestImageID, "/bin/cat"); err != nil {
417
-			utils.Debugf("Error CmdRun: %s", err)
417
+			log.Debugf("Error CmdRun: %s", err)
418 418
 		}
419 419
 	}()
420 420
 
... ...
@@ -4,7 +4,7 @@ import (
4 4
 	"bytes"
5 5
 	"fmt"
6 6
 	"io"
7
-	"log"
7
+	std_log "log"
8 8
 	"net"
9 9
 	"net/url"
10 10
 	"os"
... ...
@@ -20,6 +20,7 @@ import (
20 20
 	"github.com/docker/docker/engine"
21 21
 	"github.com/docker/docker/image"
22 22
 	"github.com/docker/docker/nat"
23
+	"github.com/docker/docker/pkg/log"
23 24
 	"github.com/docker/docker/reexec"
24 25
 	"github.com/docker/docker/runconfig"
25 26
 	"github.com/docker/docker/utils"
... ...
@@ -99,7 +100,7 @@ func init() {
99 99
 	}
100 100
 
101 101
 	if uid := syscall.Geteuid(); uid != 0 {
102
-		log.Fatal("docker tests need to be run as root")
102
+		log.Fatalf("docker tests need to be run as root")
103 103
 	}
104 104
 
105 105
 	// Copy dockerinit into our current testing directory, if provided (so we can test a separate dockerinit binary)
... ...
@@ -133,7 +134,7 @@ func init() {
133 133
 }
134 134
 
135 135
 func setupBaseImage() {
136
-	eng := newTestEngine(log.New(os.Stderr, "", 0), false, unitTestStoreBase)
136
+	eng := newTestEngine(std_log.New(os.Stderr, "", 0), false, unitTestStoreBase)
137 137
 	job := eng.Job("image_inspect", unitTestImageName)
138 138
 	img, _ := job.Stdout.AddEnv()
139 139
 	// If the unit test is not found, try to download it.
... ...
@@ -149,17 +150,17 @@ func setupBaseImage() {
149 149
 
150 150
 func spawnGlobalDaemon() {
151 151
 	if globalDaemon != nil {
152
-		utils.Debugf("Global daemon already exists. Skipping.")
152
+		log.Debugf("Global daemon already exists. Skipping.")
153 153
 		return
154 154
 	}
155
-	t := log.New(os.Stderr, "", 0)
155
+	t := std_log.New(os.Stderr, "", 0)
156 156
 	eng := NewTestEngine(t)
157 157
 	globalEngine = eng
158 158
 	globalDaemon = mkDaemonFromEngine(eng, t)
159 159
 
160 160
 	// Spawn a Daemon
161 161
 	go func() {
162
-		utils.Debugf("Spawning global daemon for integration tests")
162
+		log.Debugf("Spawning global daemon for integration tests")
163 163
 		listenURL := &url.URL{
164 164
 			Scheme: testDaemonProto,
165 165
 			Host:   testDaemonAddr,
... ...
@@ -197,7 +198,7 @@ func spawnRogueHttpsDaemon() {
197 197
 }
198 198
 
199 199
 func spawnHttpsDaemon(addr, cacert, cert, key string) *engine.Engine {
200
-	t := log.New(os.Stderr, "", 0)
200
+	t := std_log.New(os.Stderr, "", 0)
201 201
 	root, err := newTestDirectory(unitTestStoreBase)
202 202
 	if err != nil {
203 203
 		t.Fatal(err)
... ...
@@ -209,7 +210,7 @@ func spawnHttpsDaemon(addr, cacert, cert, key string) *engine.Engine {
209 209
 
210 210
 	// Spawn a Daemon
211 211
 	go func() {
212
-		utils.Debugf("Spawning https daemon for integration tests")
212
+		log.Debugf("Spawning https daemon for integration tests")
213 213
 		listenURL := &url.URL{
214 214
 			Scheme: testDaemonHttpsProto,
215 215
 			Host:   addr,
... ...
@@ -4,11 +4,11 @@ import (
4 4
 	"bytes"
5 5
 	"encoding/json"
6 6
 	"io"
7
-	"log"
8 7
 	"sync"
9 8
 	"time"
10 9
 
11 10
 	"github.com/docker/docker/pkg/jsonlog"
11
+	"github.com/docker/docker/pkg/log"
12 12
 )
13 13
 
14 14
 // BroadcastWriter accumulate multiple io.WriteCloser by stream.
... ...
@@ -56,7 +56,7 @@ func (w *BroadcastWriter) Write(p []byte) (n int, err error) {
56 56
 			}
57 57
 			b, err := json.Marshal(jsonlog.JSONLog{Log: line, Stream: stream, Created: created})
58 58
 			if err != nil {
59
-				log.Printf("Error making JSON log line: %s", err)
59
+				log.Errorf("Error making JSON log line: %s", err)
60 60
 				continue
61 61
 			}
62 62
 			b = append(b, '\n')
... ...
@@ -3,9 +3,10 @@ package httputils
3 3
 import (
4 4
 	"fmt"
5 5
 	"io"
6
-	"log"
7 6
 	"net/http"
8 7
 	"time"
8
+
9
+	"github.com/docker/docker/pkg/log"
9 10
 )
10 11
 
11 12
 type resumableRequestReader struct {
... ...
@@ -71,7 +72,7 @@ func (r *resumableRequestReader) Read(p []byte) (n int, err error) {
71 71
 		r.cleanUpResponse()
72 72
 	}
73 73
 	if err != nil && err != io.EOF {
74
-		log.Printf("encountered error during pull and clearing it before resume: %s", err)
74
+		log.Infof("encountered error during pull and clearing it before resume: %s", err)
75 75
 		err = nil
76 76
 	}
77 77
 	return n, err
78 78
new file mode 100644
... ...
@@ -0,0 +1,77 @@
0
+package log
1
+
2
+import (
3
+	"fmt"
4
+	"io"
5
+	"os"
6
+	"runtime"
7
+	"strings"
8
+)
9
+
10
+type priority int
11
+
12
+const (
13
+	errorFormat = "[%s] %s:%d %s\n"
14
+	logFormat   = "[%s] %s\n"
15
+
16
+	fatal priority = iota
17
+	error
18
+	info
19
+	debug
20
+)
21
+
22
+func (p priority) String() string {
23
+	switch p {
24
+	case fatal:
25
+		return "fatal"
26
+	case error:
27
+		return "error"
28
+	case info:
29
+		return "info"
30
+	case debug:
31
+		return "debug"
32
+	}
33
+
34
+	return ""
35
+}
36
+
37
+// Debug function, if the debug flag is set, then display. Do nothing otherwise
38
+// If Docker is in damon mode, also send the debug info on the socket
39
+func Debugf(format string, a ...interface{}) {
40
+	if os.Getenv("DEBUG") != "" {
41
+		logf(os.Stderr, debug, format, a...)
42
+	}
43
+}
44
+
45
+func Infof(format string, a ...interface{}) {
46
+	logf(os.Stdout, info, format, a...)
47
+}
48
+
49
+func Errorf(format string, a ...interface{}) {
50
+	logf(os.Stderr, error, format, a...)
51
+}
52
+
53
+func Fatalf(format string, a ...interface{}) {
54
+	logf(os.Stderr, fatal, format, a...)
55
+	os.Exit(1)
56
+}
57
+
58
+func logf(stream io.Writer, level priority, format string, a ...interface{}) {
59
+	var prefix string
60
+
61
+	if level <= error || level == debug {
62
+		// Retrieve the stack infos
63
+		_, file, line, ok := runtime.Caller(2)
64
+		if !ok {
65
+			file = "<unknown>"
66
+			line = -1
67
+		} else {
68
+			file = file[strings.LastIndex(file, "/")+1:]
69
+		}
70
+		prefix = fmt.Sprintf(errorFormat, level.String(), file, line, format)
71
+	} else {
72
+		prefix = fmt.Sprintf(logFormat, level.String(), format)
73
+	}
74
+
75
+	fmt.Fprintf(stream, prefix, a...)
76
+}
0 77
new file mode 100644
... ...
@@ -0,0 +1,37 @@
0
+package log
1
+
2
+import (
3
+	"bytes"
4
+	"regexp"
5
+
6
+	"testing"
7
+)
8
+
9
+func TestLogFatalf(t *testing.T) {
10
+	var output *bytes.Buffer
11
+
12
+	tests := []struct {
13
+		Level           priority
14
+		Format          string
15
+		Values          []interface{}
16
+		ExpectedPattern string
17
+	}{
18
+		{fatal, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[fatal\\] testing.go:\\d+ 1 \\+ 1 = 2"},
19
+		{error, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[error\\] testing.go:\\d+ 1 \\+ 1 = 2"},
20
+		{info, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[info\\] 1 \\+ 1 = 2"},
21
+		{debug, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[debug\\] testing.go:\\d+ 1 \\+ 1 = 2"},
22
+	}
23
+
24
+	for i, test := range tests {
25
+		output = &bytes.Buffer{}
26
+		logf(output, test.Level, test.Format, test.Values...)
27
+
28
+		expected := regexp.MustCompile(test.ExpectedPattern)
29
+		if !expected.MatchString(output.String()) {
30
+			t.Errorf("[%d] Log output does not match expected pattern:\n\tExpected: %s\n\tOutput: %s",
31
+				i,
32
+				expected.String(),
33
+				output.String())
34
+		}
35
+	}
36
+}
... ...
@@ -7,12 +7,13 @@ import (
7 7
 	"encoding/hex"
8 8
 	"hash"
9 9
 	"io"
10
-	"log"
11 10
 	"sort"
12 11
 	"strconv"
13 12
 	"strings"
14 13
 
15 14
 	"github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar"
15
+
16
+	"github.com/docker/docker/pkg/log"
16 17
 )
17 18
 
18 19
 type TarSum struct {
... ...
@@ -170,11 +171,11 @@ func (ts *TarSum) Sum(extra []byte) string {
170 170
 		h.Write(extra)
171 171
 	}
172 172
 	for _, sum := range sums {
173
-		log.Printf("-->%s<--", sum)
173
+		log.Infof("-->%s<--", sum)
174 174
 		h.Write([]byte(sum))
175 175
 	}
176 176
 	checksum := "tarsum+sha256:" + hex.EncodeToString(h.Sum(nil))
177
-	log.Printf("checksum processed: %s", checksum)
177
+	log.Infof("checksum processed: %s", checksum)
178 178
 	return checksum
179 179
 }
180 180
 
... ...
@@ -15,6 +15,7 @@ import (
15 15
 	"strings"
16 16
 	"time"
17 17
 
18
+	"github.com/docker/docker/pkg/log"
18 19
 	"github.com/docker/docker/utils"
19 20
 )
20 21
 
... ...
@@ -186,17 +187,17 @@ func pingRegistryEndpoint(endpoint string) (RegistryInfo, error) {
186 186
 		Standalone: true,
187 187
 	}
188 188
 	if err := json.Unmarshal(jsonString, &info); err != nil {
189
-		utils.Debugf("Error unmarshalling the _ping RegistryInfo: %s", err)
189
+		log.Debugf("Error unmarshalling the _ping RegistryInfo: %s", err)
190 190
 		// don't stop here. Just assume sane defaults
191 191
 	}
192 192
 	if hdr := resp.Header.Get("X-Docker-Registry-Version"); hdr != "" {
193
-		utils.Debugf("Registry version header: '%s'", hdr)
193
+		log.Debugf("Registry version header: '%s'", hdr)
194 194
 		info.Version = hdr
195 195
 	}
196
-	utils.Debugf("RegistryInfo.Version: %q", info.Version)
196
+	log.Debugf("RegistryInfo.Version: %q", info.Version)
197 197
 
198 198
 	standalone := resp.Header.Get("X-Docker-Registry-Standalone")
199
-	utils.Debugf("Registry standalone header: '%s'", standalone)
199
+	log.Debugf("Registry standalone header: '%s'", standalone)
200 200
 	// Accepted values are "true" (case-insensitive) and "1".
201 201
 	if strings.EqualFold(standalone, "true") || standalone == "1" {
202 202
 		info.Standalone = true
... ...
@@ -204,7 +205,7 @@ func pingRegistryEndpoint(endpoint string) (RegistryInfo, error) {
204 204
 		// there is a header set, and it is not "true" or "1", so assume fails
205 205
 		info.Standalone = false
206 206
 	}
207
-	utils.Debugf("RegistryInfo.Standalone: %q", info.Standalone)
207
+	log.Debugf("RegistryInfo.Standalone: %q", info.Standalone)
208 208
 	return info, nil
209 209
 }
210 210
 
... ...
@@ -274,7 +275,7 @@ func ExpandAndVerifyRegistryUrl(hostname string) (string, error) {
274 274
 	}
275 275
 	endpoint := fmt.Sprintf("https://%s/v1/", hostname)
276 276
 	if _, err := pingRegistryEndpoint(endpoint); err != nil {
277
-		utils.Debugf("Registry %s does not work (%s), falling back to http", endpoint, err)
277
+		log.Debugf("Registry %s does not work (%s), falling back to http", endpoint, err)
278 278
 		endpoint = fmt.Sprintf("http://%s/v1/", hostname)
279 279
 		if _, err = pingRegistryEndpoint(endpoint); err != nil {
280 280
 			//TODO: triggering highland build can be done there without "failing"
... ...
@@ -3,8 +3,6 @@ package registry
3 3
 import (
4 4
 	"encoding/json"
5 5
 	"fmt"
6
-	"github.com/docker/docker/utils"
7
-	"github.com/gorilla/mux"
8 6
 	"io"
9 7
 	"io/ioutil"
10 8
 	"net/http"
... ...
@@ -14,6 +12,10 @@ import (
14 14
 	"strings"
15 15
 	"testing"
16 16
 	"time"
17
+
18
+	"github.com/gorilla/mux"
19
+
20
+	"github.com/docker/docker/pkg/log"
17 21
 )
18 22
 
19 23
 var (
... ...
@@ -96,7 +98,7 @@ func init() {
96 96
 
97 97
 func handlerAccessLog(handler http.Handler) http.Handler {
98 98
 	logHandler := func(w http.ResponseWriter, r *http.Request) {
99
-		utils.Debugf("%s \"%s %s\"", r.RemoteAddr, r.Method, r.URL)
99
+		log.Debugf("%s \"%s %s\"", r.RemoteAddr, r.Method, r.URL)
100 100
 		handler.ServeHTTP(w, r)
101 101
 	}
102 102
 	return http.HandlerFunc(logHandler)
... ...
@@ -4,7 +4,7 @@ import (
4 4
 	"strings"
5 5
 
6 6
 	"github.com/docker/docker/nat"
7
-	"github.com/docker/docker/utils"
7
+	"github.com/docker/docker/pkg/log"
8 8
 )
9 9
 
10 10
 func Merge(userConf, imageConf *Config) error {
... ...
@@ -50,7 +50,7 @@ func Merge(userConf, imageConf *Config) error {
50 50
 	}
51 51
 	if len(imageConf.PortSpecs) > 0 {
52 52
 		// FIXME: I think we can safely remove this. Leaving it for now for the sake of reverse-compat paranoia.
53
-		utils.Debugf("Migrating image port specs to containter: %s", strings.Join(imageConf.PortSpecs, ", "))
53
+		log.Debugf("Migrating image port specs to containter: %s", strings.Join(imageConf.PortSpecs, ", "))
54 54
 		if userConf.ExposedPorts == nil {
55 55
 			userConf.ExposedPorts = make(nat.PortSet)
56 56
 		}
... ...
@@ -226,7 +226,7 @@ func parseRun(cmd *flag.FlagSet, args []string, sysInfo *sysinfo.SysInfo) (*Conf
226 226
 	// parse the '-e' and '--env' after, to allow override
227 227
 	envVariables = append(envVariables, flEnv.GetAll()...)
228 228
 	// boo, there's no debug output for docker run
229
-	//utils.Debugf("Environment variables for the container: %#v", envVariables)
229
+	//log.Debugf("Environment variables for the container: %#v", envVariables)
230 230
 
231 231
 	netMode, err := parseNetMode(*flNetMode)
232 232
 	if err != nil {
... ...
@@ -4,6 +4,8 @@ import (
4 4
 	"io"
5 5
 	"net/http"
6 6
 	"strings"
7
+
8
+	"github.com/docker/docker/pkg/log"
7 9
 )
8 10
 
9 11
 // VersionInfo is used to model entities which has a version.
... ...
@@ -157,6 +159,6 @@ func (h *HTTPRequestFactory) NewRequest(method, urlStr string, body io.Reader, d
157 157
 			return nil, err
158 158
 		}
159 159
 	}
160
-	Debugf("%v -- HEADERS: %v", req.URL, req.Header)
160
+	log.Debugf("%v -- HEADERS: %v", req.URL, req.Header)
161 161
 	return req, err
162 162
 }
... ...
@@ -4,6 +4,8 @@ import (
4 4
 	"encoding/binary"
5 5
 	"errors"
6 6
 	"io"
7
+
8
+	"github.com/docker/docker/pkg/log"
7 9
 )
8 10
 
9 11
 const (
... ...
@@ -85,13 +87,13 @@ func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)
85 85
 			nr += nr2
86 86
 			if er == io.EOF {
87 87
 				if nr < StdWriterPrefixLen {
88
-					Debugf("Corrupted prefix: %v", buf[:nr])
88
+					log.Debugf("Corrupted prefix: %v", buf[:nr])
89 89
 					return written, nil
90 90
 				}
91 91
 				break
92 92
 			}
93 93
 			if er != nil {
94
-				Debugf("Error reading header: %s", er)
94
+				log.Debugf("Error reading header: %s", er)
95 95
 				return 0, er
96 96
 			}
97 97
 		}
... ...
@@ -107,18 +109,18 @@ func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)
107 107
 			// Write on stderr
108 108
 			out = dsterr
109 109
 		default:
110
-			Debugf("Error selecting output fd: (%d)", buf[StdWriterFdIndex])
110
+			log.Debugf("Error selecting output fd: (%d)", buf[StdWriterFdIndex])
111 111
 			return 0, ErrInvalidStdHeader
112 112
 		}
113 113
 
114 114
 		// Retrieve the size of the frame
115 115
 		frameSize = int(binary.BigEndian.Uint32(buf[StdWriterSizeIndex : StdWriterSizeIndex+4]))
116
-		Debugf("framesize: %d", frameSize)
116
+		log.Debugf("framesize: %d", frameSize)
117 117
 
118 118
 		// Check if the buffer is big enough to read the frame.
119 119
 		// Extend it if necessary.
120 120
 		if frameSize+StdWriterPrefixLen > bufLen {
121
-			Debugf("Extending buffer cap by %d (was %d)", frameSize+StdWriterPrefixLen-bufLen+1, len(buf))
121
+			log.Debugf("Extending buffer cap by %d (was %d)", frameSize+StdWriterPrefixLen-bufLen+1, len(buf))
122 122
 			buf = append(buf, make([]byte, frameSize+StdWriterPrefixLen-bufLen+1)...)
123 123
 			bufLen = len(buf)
124 124
 		}
... ...
@@ -130,13 +132,13 @@ func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)
130 130
 			nr += nr2
131 131
 			if er == io.EOF {
132 132
 				if nr < frameSize+StdWriterPrefixLen {
133
-					Debugf("Corrupted frame: %v", buf[StdWriterPrefixLen:nr])
133
+					log.Debugf("Corrupted frame: %v", buf[StdWriterPrefixLen:nr])
134 134
 					return written, nil
135 135
 				}
136 136
 				break
137 137
 			}
138 138
 			if er != nil {
139
-				Debugf("Error reading frame: %s", er)
139
+				log.Debugf("Error reading frame: %s", er)
140 140
 				return 0, er
141 141
 			}
142 142
 		}
... ...
@@ -144,12 +146,12 @@ func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error)
144 144
 		// Write the retrieved frame (without header)
145 145
 		nw, ew = out.Write(buf[StdWriterPrefixLen : frameSize+StdWriterPrefixLen])
146 146
 		if ew != nil {
147
-			Debugf("Error writing frame: %s", ew)
147
+			log.Debugf("Error writing frame: %s", ew)
148 148
 			return 0, ew
149 149
 		}
150 150
 		// If the frame has not been fully written: error
151 151
 		if nw != frameSize {
152
-			Debugf("Error Short Write: (%d on %d)", nw, frameSize)
152
+			log.Debugf("Error Short Write: (%d on %d)", nw, frameSize)
153 153
 			return 0, io.ErrShortWrite
154 154
 		}
155 155
 		written += int64(nw)
... ...
@@ -20,6 +20,7 @@ import (
20 20
 	"syscall"
21 21
 
22 22
 	"github.com/docker/docker/dockerversion"
23
+	"github.com/docker/docker/pkg/log"
23 24
 )
24 25
 
25 26
 type KeyValuePair struct {
... ...
@@ -54,31 +55,6 @@ func Download(url string) (resp *http.Response, err error) {
54 54
 	return resp, nil
55 55
 }
56 56
 
57
-func logf(level string, format string, a ...interface{}) {
58
-	// Retrieve the stack infos
59
-	_, file, line, ok := runtime.Caller(2)
60
-	if !ok {
61
-		file = "<unknown>"
62
-		line = -1
63
-	} else {
64
-		file = file[strings.LastIndex(file, "/")+1:]
65
-	}
66
-
67
-	fmt.Fprintf(os.Stderr, fmt.Sprintf("[%s] %s:%d %s\n", level, file, line, format), a...)
68
-}
69
-
70
-// Debug function, if the debug flag is set, then display. Do nothing otherwise
71
-// If Docker is in damon mode, also send the debug info on the socket
72
-func Debugf(format string, a ...interface{}) {
73
-	if os.Getenv("DEBUG") != "" {
74
-		logf("debug", format, a...)
75
-	}
76
-}
77
-
78
-func Errorf(format string, a ...interface{}) {
79
-	logf("error", format, a...)
80
-}
81
-
82 57
 func Trunc(s string, maxlen int) string {
83 58
 	if len(s) <= maxlen {
84 59
 		return s
... ...
@@ -264,7 +240,7 @@ func (r *bufReader) Close() error {
264 264
 
265 265
 func GetTotalUsedFds() int {
266 266
 	if fds, err := ioutil.ReadDir(fmt.Sprintf("/proc/%d/fd", os.Getpid())); err != nil {
267
-		Errorf("Error opening /proc/%d/fd: %s", os.Getpid(), err)
267
+		log.Errorf("Error opening /proc/%d/fd: %s", os.Getpid(), err)
268 268
 	} else {
269 269
 		return len(fds)
270 270
 	}
... ...
@@ -705,15 +681,15 @@ func Matches(relFilePath string, patterns []string) (bool, error) {
705 705
 	for _, exclude := range patterns {
706 706
 		matched, err := filepath.Match(exclude, relFilePath)
707 707
 		if err != nil {
708
-			Errorf("Error matching: %s (pattern: %s)", relFilePath, exclude)
708
+			log.Errorf("Error matching: %s (pattern: %s)", relFilePath, exclude)
709 709
 			return false, err
710 710
 		}
711 711
 		if matched {
712 712
 			if filepath.Clean(relFilePath) == "." {
713
-				Errorf("Can't exclude whole path, excluding pattern: %s", exclude)
713
+				log.Errorf("Can't exclude whole path, excluding pattern: %s", exclude)
714 714
 				continue
715 715
 			}
716
-			Debugf("Skipping excluded path: %s", relFilePath)
716
+			log.Debugf("Skipping excluded path: %s", relFilePath)
717 717
 			return true, nil
718 718
 		}
719 719
 	}