Merge lp:~thumper/juju-core/remove-old-log-functions into lp:~go-bot/juju-core/trunk
- remove-old-log-functions
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Tim Penhey |
Approved revision: | no longer in the source branch. |
Merged at revision: | 2641 |
Proposed branch: | lp:~thumper/juju-core/remove-old-log-functions |
Merge into: | lp:~go-bot/juju-core/trunk |
Diff against target: |
1730 lines (+181/-320) 38 files modified
charm/charm.go (+4/-0) charm/dir.go (+1/-3) charm/dir_test.go (+1/-1) charm/repo.go (+3/-4) charm/repo_test.go (+4/-4) cmd/juju/plugin.go (+1/-2) cmd/juju/publish.go (+5/-6) cmd/jujud/agent.go (+2/-2) container/kvm/container.go (+2/-2) container/kvm/kvm.go (+3/-3) downloader/downloader.go (+4/-2) environs/testing/tools.go (+1/-2) errors/errors.go (+8/-0) juju/api.go (+0/-4) juju/conn.go (+7/-4) log/log.go (+0/-51) log/log_test.go (+0/-84) provider/common/state.go (+2/-3) rpc/rpc_test.go (+8/-6) state/api/watcher/watcher.go (+4/-2) state/apiserver/charmrevisionupdater/updater.go (+2/-2) state/apiserver/common/password.go (+6/-3) state/apiserver/common/resource.go (+1/-3) state/presence/presence.go (+13/-23) state/watcher/watcher.go (+7/-17) store/lpad.go (+4/-5) store/server.go (+6/-7) store/store.go (+32/-30) testing/mgo.go (+6/-7) testing/testbase/log_test.go (+12/-10) utils/syslog/config_test.go (+2/-2) worker/authenticationworker/worker.go (+7/-7) worker/charmrevisionworker/revisionupdater.go (+4/-2) worker/cleaner/cleaner.go (+5/-2) worker/resumer/resumer.go (+4/-3) worker/rsyslog/rsyslog_test.go (+1/-1) worker/rsyslog/worker.go (+1/-1) worker/runner.go (+8/-10) |
To merge this branch: | bzr merge lp:~thumper/juju-core/remove-old-log-functions |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Engineering | Pending | ||
Review via email: mp+216247@code.launchpad.net |
Commit message
Remove legacy log functions.
This branch removes the old log.Errorf, log.Noticef,
log.Infof, log.Debugf, and log.Warningf in favour of
loggo functions.
The rsyslog package is moved to be under utils, and
the LoggedErrorf is moved to the errors package.
A lot of very mechanical changes.
Description of the change
Remove legacy log functions.
This branch removes the old log.Errorf, log.Noticef,
log.Infof, log.Debugf, and log.Warningf in favour of
loggo functions.
The rsyslog package is moved to be under utils, and
the LoggedErrorf is moved to the errors package.
A lot of very mechanical changes.
Tim Penhey (thumper) wrote : | # |
Dave Cheney (dave-cheney) wrote : | # |
On 2014/04/17 04:04:29, thumper wrote:
> Please take a look.
LGTM
Go Bot (go-bot) wrote : | # |
The attempt to merge lp:~thumper/juju-core/remove-old-log-functions into lp:juju-core failed. Below is the output from the failed tests.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
John A Meinel (jameinel) wrote : | # |
LGTM though the functions that used the "debugf" wrapper should probably
actually be dropped to Tracef level.
https:/
File state/presence/
https:/
state/presence/
loggo.GetLogger
These were all disabled by default, should we actually reduce them down
to Tracef?
https:/
File state/watcher/
https:/
state/watcher/
req)
Same here, all of these were actually lower-than-debug because you had
to explicitly enable the whole package to log.
We could make "juju.state.
turning all of these into Tracef makes the most sense.
Go Bot (go-bot) wrote : | # |
The attempt to merge lp:~thumper/juju-core/remove-old-log-functions into lp:juju-core failed. Below is the output from the failed tests.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
Preview Diff
1 | === modified file 'charm/charm.go' |
2 | --- charm/charm.go 2014-04-09 16:36:12 +0000 |
3 | +++ charm/charm.go 2014-04-17 05:11:55 +0000 |
4 | @@ -7,8 +7,12 @@ |
5 | "errors" |
6 | "fmt" |
7 | "os" |
8 | + |
9 | + "github.com/juju/loggo" |
10 | ) |
11 | |
12 | +var logger = loggo.GetLogger("juju.charm") |
13 | + |
14 | // The Charm interface is implemented by any type that |
15 | // may be handled as a charm. |
16 | type Charm interface { |
17 | |
18 | === modified file 'charm/dir.go' |
19 | --- charm/dir.go 2014-02-24 22:41:56 +0000 |
20 | +++ charm/dir.go 2014-04-17 05:11:55 +0000 |
21 | @@ -14,8 +14,6 @@ |
22 | "strconv" |
23 | "strings" |
24 | "syscall" |
25 | - |
26 | - "launchpad.net/juju-core/log" |
27 | ) |
28 | |
29 | // The Dir type encapsulates access to data and operations |
30 | @@ -190,7 +188,7 @@ |
31 | if filepath.Dir(relpath) == "hooks" { |
32 | hookName := filepath.Base(relpath) |
33 | if _, ok := zp.hooks[hookName]; !fi.IsDir() && ok && mode&0100 == 0 { |
34 | - log.Warningf("charm: making %q executable in charm", path) |
35 | + logger.Warningf("making %q executable in charm", path) |
36 | perm = perm | 0100 |
37 | } |
38 | } |
39 | |
40 | === modified file 'charm/dir_test.go' |
41 | --- charm/dir_test.go 2013-09-20 02:33:04 +0000 |
42 | +++ charm/dir_test.go 2014-04-17 05:11:55 +0000 |
43 | @@ -143,7 +143,7 @@ |
44 | tlog := c.GetTestLog() |
45 | for _, hook := range hooks { |
46 | fullpath := filepath.Join(dir.Path, "hooks", hook) |
47 | - exp := fmt.Sprintf(`^(.|\n)*WARNING juju charm: making "%s" executable in charm(.|\n)*$`, fullpath) |
48 | + exp := fmt.Sprintf(`^(.|\n)*WARNING juju.charm making "%s" executable in charm(.|\n)*$`, fullpath) |
49 | c.Assert(tlog, gc.Matches, exp, gc.Commentf("hook %q was not made executable", fullpath)) |
50 | } |
51 | |
52 | |
53 | === modified file 'charm/repo.go' |
54 | --- charm/repo.go 2014-04-03 03:59:10 +0000 |
55 | +++ charm/repo.go 2014-04-17 05:11:55 +0000 |
56 | @@ -15,7 +15,6 @@ |
57 | "path/filepath" |
58 | "strings" |
59 | |
60 | - "launchpad.net/juju-core/log" |
61 | "launchpad.net/juju-core/utils" |
62 | ) |
63 | |
64 | @@ -185,7 +184,7 @@ |
65 | if err != nil { |
66 | return nil, readErr |
67 | } |
68 | - log.Errorf("%v Response body: %s", errMsg, body) |
69 | + logger.Errorf("%v Response body: %s", errMsg, body) |
70 | return nil, errMsg |
71 | } |
72 | body, err := ioutil.ReadAll(resp.Body) |
73 | @@ -256,7 +255,7 @@ |
74 | revisions = make([]CharmRevision, len(infos)) |
75 | for i, info := range infos { |
76 | for _, w := range info.Warnings { |
77 | - log.Warningf("charm store reports for %q: %s", curls[i], w) |
78 | + logger.Warningf("charm store reports for %q: %s", curls[i], w) |
79 | } |
80 | if info.Errors == nil { |
81 | revisions[i].Revision = info.Revision |
82 | @@ -503,7 +502,7 @@ |
83 | continue |
84 | } |
85 | if ch, err := Read(chPath); err != nil { |
86 | - log.Warningf("failed to load charm at %q: %s", chPath, err) |
87 | + logger.Warningf("failed to load charm at %q: %s", chPath, err) |
88 | } else if ch.Meta().Name == curl.Name { |
89 | if ch.Revision() == curl.Revision { |
90 | return ch, nil |
91 | |
92 | === modified file 'charm/repo_test.go' |
93 | --- charm/repo_test.go 2014-04-03 03:11:18 +0000 |
94 | +++ charm/repo_test.go 2014-04-17 05:11:55 +0000 |
95 | @@ -75,7 +75,7 @@ |
96 | |
97 | func (s *StoreSuite) TestWarning(c *gc.C) { |
98 | charmURL := charm.MustParseURL("cs:series/unwise") |
99 | - expect := `.* WARNING juju charm store reports for "cs:series/unwise": foolishness` + "\n" |
100 | + expect := `.* WARNING juju.charm charm store reports for "cs:series/unwise": foolishness` + "\n" |
101 | r, err := charm.Latest(s.store, charmURL) |
102 | c.Assert(r, gc.Equals, 23) |
103 | c.Assert(err, gc.IsNil) |
104 | @@ -493,9 +493,9 @@ |
105 | c.Assert(err, gc.IsNil) |
106 | c.Assert(ch.Revision(), gc.Equals, 1) |
107 | c.Assert(c.GetTestLog(), gc.Matches, ` |
108 | -.* WARNING juju failed to load charm at ".*/quantal/blah": .* |
109 | -.* WARNING juju failed to load charm at ".*/quantal/blah.charm": .* |
110 | -.* WARNING juju failed to load charm at ".*/quantal/upgrade2": .* |
111 | +.* WARNING juju.charm failed to load charm at ".*/quantal/blah": .* |
112 | +.* WARNING juju.charm failed to load charm at ".*/quantal/blah.charm": .* |
113 | +.* WARNING juju.charm failed to load charm at ".*/quantal/upgrade2": .* |
114 | `[1:]) |
115 | } |
116 | |
117 | |
118 | === modified file 'cmd/juju/plugin.go' |
119 | --- cmd/juju/plugin.go 2014-04-09 06:35:07 +0000 |
120 | +++ cmd/juju/plugin.go 2014-04-17 05:11:55 +0000 |
121 | @@ -18,7 +18,6 @@ |
122 | "launchpad.net/juju-core/cmd" |
123 | "launchpad.net/juju-core/cmd/envcmd" |
124 | "launchpad.net/juju-core/juju/osenv" |
125 | - "launchpad.net/juju-core/log" |
126 | ) |
127 | |
128 | const JujuPluginPrefix = "juju-" |
129 | @@ -170,7 +169,7 @@ |
130 | result.description = strings.SplitN(string(output), "\n", 2)[0] |
131 | } else { |
132 | result.description = fmt.Sprintf("error occurred running '%s --description'", plugin) |
133 | - log.Errorf("'%s --description': %s", plugin, err) |
134 | + logger.Errorf("'%s --description': %s", plugin, err) |
135 | } |
136 | }(plugin) |
137 | } |
138 | |
139 | === modified file 'cmd/juju/publish.go' |
140 | --- cmd/juju/publish.go 2014-04-09 16:36:12 +0000 |
141 | +++ cmd/juju/publish.go 2014-04-17 05:11:55 +0000 |
142 | @@ -15,7 +15,6 @@ |
143 | "launchpad.net/juju-core/charm" |
144 | "launchpad.net/juju-core/cmd" |
145 | "launchpad.net/juju-core/cmd/envcmd" |
146 | - "launchpad.net/juju-core/log" |
147 | ) |
148 | |
149 | type PublishCommand struct { |
150 | @@ -127,7 +126,7 @@ |
151 | if err != nil { |
152 | return fmt.Errorf("cannot obtain local digest: %v", err) |
153 | } |
154 | - log.Infof("local digest is %s", localDigest) |
155 | + logger.Infof("local digest is %s", localDigest) |
156 | |
157 | ch, err := charm.ReadDir(branch.Location()) |
158 | if err != nil { |
159 | @@ -141,7 +140,7 @@ |
160 | if _, ok := err.(*charm.NotFoundError); ok { |
161 | oldEvent, err = charm.Store.Event(curl, "") |
162 | if _, ok := err.(*charm.NotFoundError); ok { |
163 | - log.Infof("charm %s is not yet in the store", curl) |
164 | + logger.Infof("charm %s is not yet in the store", curl) |
165 | err = nil |
166 | } |
167 | } |
168 | @@ -153,13 +152,13 @@ |
169 | return handleEvent(ctx, curl, oldEvent) |
170 | } |
171 | |
172 | - log.Infof("sending charm to the charm store...") |
173 | + logger.Infof("sending charm to the charm store...") |
174 | |
175 | err = branch.Push(&bzr.PushAttr{Location: pushLocation, Remember: true}) |
176 | if err != nil { |
177 | return err |
178 | } |
179 | - log.Infof("charm sent; waiting for it to be published...") |
180 | + logger.Infof("charm sent; waiting for it to be published...") |
181 | for { |
182 | time.Sleep(c.pollDelay) |
183 | newEvent, err := charm.Store.Event(curl, "") |
184 | @@ -184,7 +183,7 @@ |
185 | switch event.Kind { |
186 | case "published": |
187 | curlRev := curl.WithRevision(event.Revision) |
188 | - log.Infof("charm published at %s as %s", event.Time, curlRev) |
189 | + logger.Infof("charm published at %s as %s", event.Time, curlRev) |
190 | fmt.Fprintln(ctx.Stdout, curlRev) |
191 | case "publish-error": |
192 | return fmt.Errorf("charm could not be published: %s", strings.Join(event.Errors, "; ")) |
193 | |
194 | === modified file 'cmd/jujud/agent.go' |
195 | --- cmd/jujud/agent.go 2014-04-14 17:10:39 +0000 |
196 | +++ cmd/jujud/agent.go 2014-04-17 05:11:55 +0000 |
197 | @@ -13,8 +13,8 @@ |
198 | |
199 | "launchpad.net/juju-core/agent" |
200 | "launchpad.net/juju-core/cmd" |
201 | + "launchpad.net/juju-core/errors" |
202 | "launchpad.net/juju-core/instance" |
203 | - "launchpad.net/juju-core/log" |
204 | "launchpad.net/juju-core/state" |
205 | "launchpad.net/juju-core/state/api" |
206 | apiagent "launchpad.net/juju-core/state/api/agent" |
207 | @@ -274,7 +274,7 @@ |
208 | if ug, ok := err.(*upgrader.UpgradeReadyError); ok { |
209 | if err := ug.ChangeAgentTools(); err != nil { |
210 | // Return and let upstart deal with the restart. |
211 | - return log.LoggedErrorf(logger, "cannot change agent tools: %v", err) |
212 | + return errors.LoggedErrorf(logger, "cannot change agent tools: %v", err) |
213 | } |
214 | } |
215 | return err |
216 | |
217 | === modified file 'container/kvm/container.go' |
218 | --- container/kvm/container.go 2013-12-05 22:32:47 +0000 |
219 | +++ container/kvm/container.go 2014-04-17 05:11:55 +0000 |
220 | @@ -7,7 +7,7 @@ |
221 | "fmt" |
222 | |
223 | "launchpad.net/juju-core/container" |
224 | - "launchpad.net/juju-core/log" |
225 | + "launchpad.net/juju-core/errors" |
226 | ) |
227 | |
228 | type kvmContainer struct { |
229 | @@ -35,7 +35,7 @@ |
230 | if params.Network.NetworkType == container.BridgeNetwork { |
231 | bridge = params.Network.Device |
232 | } else { |
233 | - return log.LoggedErrorf(logger, "Non-bridge network devices not yet supported") |
234 | + return errors.LoggedErrorf(logger, "Non-bridge network devices not yet supported") |
235 | } |
236 | } |
237 | logger.Debugf("Create the machine %s", c.name) |
238 | |
239 | === modified file 'container/kvm/kvm.go' |
240 | --- container/kvm/kvm.go 2014-03-19 21:08:58 +0000 |
241 | +++ container/kvm/kvm.go 2014-04-17 05:11:55 +0000 |
242 | @@ -14,8 +14,8 @@ |
243 | "launchpad.net/juju-core/constraints" |
244 | "launchpad.net/juju-core/container" |
245 | "launchpad.net/juju-core/environs/cloudinit" |
246 | + "launchpad.net/juju-core/errors" |
247 | "launchpad.net/juju-core/instance" |
248 | - "launchpad.net/juju-core/log" |
249 | "launchpad.net/juju-core/names" |
250 | "launchpad.net/juju-core/version" |
251 | ) |
252 | @@ -100,7 +100,7 @@ |
253 | logger.Tracef("write cloud-init") |
254 | userDataFilename, err := container.WriteUserData(machineConfig, directory) |
255 | if err != nil { |
256 | - return nil, nil, log.LoggedErrorf(logger, "failed to write user data: %v", err) |
257 | + return nil, nil, errors.LoggedErrorf(logger, "failed to write user data: %v", err) |
258 | } |
259 | // Create the container. |
260 | startParams := ParseConstraintsToStartParams(machineConfig.Constraints) |
261 | @@ -119,7 +119,7 @@ |
262 | |
263 | logger.Tracef("create the container, constraints: %v", machineConfig.Constraints) |
264 | if err := kvmContainer.Start(startParams); err != nil { |
265 | - return nil, nil, log.LoggedErrorf(logger, "kvm container creation failed: %v", err) |
266 | + return nil, nil, errors.LoggedErrorf(logger, "kvm container creation failed: %v", err) |
267 | } |
268 | logger.Tracef("kvm container created") |
269 | return &kvmInstance{kvmContainer, name}, &hardware, nil |
270 | |
271 | === modified file 'downloader/downloader.go' |
272 | --- downloader/downloader.go 2014-03-21 03:27:16 +0000 |
273 | +++ downloader/downloader.go 2014-04-17 05:11:55 +0000 |
274 | @@ -10,12 +10,14 @@ |
275 | "net/http" |
276 | "os" |
277 | |
278 | + "github.com/juju/loggo" |
279 | "launchpad.net/tomb" |
280 | |
281 | - "launchpad.net/juju-core/log" |
282 | "launchpad.net/juju-core/utils" |
283 | ) |
284 | |
285 | +var logger = loggo.GetLogger("juju.downloader") |
286 | + |
287 | // Status represents the status of a completed download. |
288 | type Status struct { |
289 | // File holds the downloaded data on success. |
290 | @@ -114,7 +116,7 @@ |
291 | if f != nil { |
292 | f.Close() |
293 | if err := os.Remove(f.Name()); err != nil { |
294 | - log.Warningf("downloader: cannot remove temp file %q: %v", f.Name(), err) |
295 | + logger.Warningf("cannot remove temp file %q: %v", f.Name(), err) |
296 | } |
297 | } |
298 | } |
299 | |
300 | === modified file 'environs/testing/tools.go' |
301 | --- environs/testing/tools.go 2014-04-09 16:36:12 +0000 |
302 | +++ environs/testing/tools.go 2014-04-17 05:11:55 +0000 |
303 | @@ -16,7 +16,6 @@ |
304 | "launchpad.net/juju-core/environs/simplestreams" |
305 | "launchpad.net/juju-core/environs/storage" |
306 | envtools "launchpad.net/juju-core/environs/tools" |
307 | - "launchpad.net/juju-core/log" |
308 | "launchpad.net/juju-core/state" |
309 | coretesting "launchpad.net/juju-core/testing" |
310 | coretools "launchpad.net/juju-core/tools" |
311 | @@ -92,7 +91,7 @@ |
312 | } |
313 | |
314 | func uploadFakeToolsVersion(stor storage.Storage, vers version.Binary) (*coretools.Tools, error) { |
315 | - log.Noticef("environs/testing: uploading FAKE tools %s", vers) |
316 | + logger.Infof("uploading FAKE tools %s", vers) |
317 | tgz, checksum := coretesting.TarGz( |
318 | coretesting.NewTarFile("jujud", 0777, "jujud contents "+vers.String())) |
319 | size := int64(len(tgz)) |
320 | |
321 | === modified file 'errors/errors.go' |
322 | --- errors/errors.go 2014-04-11 15:16:00 +0000 |
323 | +++ errors/errors.go 2014-04-17 05:11:55 +0000 |
324 | @@ -6,6 +6,8 @@ |
325 | import ( |
326 | "fmt" |
327 | "strings" |
328 | + |
329 | + "github.com/juju/loggo" |
330 | ) |
331 | |
332 | // errorWrapper defines a way to encapsulate an error inside another error. |
333 | @@ -148,3 +150,9 @@ |
334 | _, ok := err.(*notSupportedError) |
335 | return ok |
336 | } |
337 | + |
338 | +// Log the error and return an error with the same text. |
339 | +func LoggedErrorf(logger loggo.Logger, format string, a ...interface{}) error { |
340 | + logger.Logf(loggo.ERROR, format, a...) |
341 | + return fmt.Errorf(format, a...) |
342 | +} |
343 | |
344 | === modified file 'juju/api.go' |
345 | --- juju/api.go 2014-04-11 18:13:56 +0000 |
346 | +++ juju/api.go 2014-04-17 05:11:55 +0000 |
347 | @@ -8,8 +8,6 @@ |
348 | "io" |
349 | "time" |
350 | |
351 | - "github.com/juju/loggo" |
352 | - |
353 | "launchpad.net/juju-core/environs" |
354 | "launchpad.net/juju-core/environs/config" |
355 | "launchpad.net/juju-core/environs/configstore" |
356 | @@ -23,8 +21,6 @@ |
357 | "launchpad.net/juju-core/utils/parallel" |
358 | ) |
359 | |
360 | -var logger = loggo.GetLogger("juju") |
361 | - |
362 | // The following are variables so that they can be |
363 | // changed by tests. |
364 | var ( |
365 | |
366 | === modified file 'juju/conn.go' |
367 | --- juju/conn.go 2014-04-02 07:29:08 +0000 |
368 | +++ juju/conn.go 2014-04-17 05:11:55 +0000 |
369 | @@ -11,17 +11,20 @@ |
370 | "os" |
371 | "time" |
372 | |
373 | + "github.com/juju/loggo" |
374 | + |
375 | "launchpad.net/juju-core/charm" |
376 | "launchpad.net/juju-core/environs" |
377 | "launchpad.net/juju-core/environs/configstore" |
378 | "launchpad.net/juju-core/errors" |
379 | "launchpad.net/juju-core/juju/osenv" |
380 | - "launchpad.net/juju-core/log" |
381 | "launchpad.net/juju-core/state" |
382 | "launchpad.net/juju-core/utils" |
383 | "launchpad.net/juju-core/utils/ssh" |
384 | ) |
385 | |
386 | +var logger = loggo.GetLogger("juju.conn") |
387 | + |
388 | // Conn holds a connection to a juju environment and its |
389 | // associated state. |
390 | type Conn struct { |
391 | @@ -55,7 +58,7 @@ |
392 | opts := state.DefaultDialOpts() |
393 | st, err := state.Open(info, opts, environs.NewStatePolicy()) |
394 | if errors.IsUnauthorizedError(err) { |
395 | - log.Noticef("juju: authorization error while connecting to state server; retrying") |
396 | + logger.Infof("authorization error while connecting to state server; retrying") |
397 | // We can't connect with the administrator password,; |
398 | // perhaps this was the first connection and the |
399 | // password has not been changed yet. |
400 | @@ -224,7 +227,7 @@ |
401 | return nil, err |
402 | } |
403 | stor := conn.Environ.Storage() |
404 | - log.Infof("writing charm to storage [%d bytes]", size) |
405 | + logger.Infof("writing charm to storage [%d bytes]", size) |
406 | if err := stor.Put(name, f, size); err != nil { |
407 | return nil, fmt.Errorf("cannot put charm: %v", err) |
408 | } |
409 | @@ -236,7 +239,7 @@ |
410 | if err != nil { |
411 | return nil, fmt.Errorf("cannot parse storage URL: %v", err) |
412 | } |
413 | - log.Infof("adding charm to state") |
414 | + logger.Infof("adding charm to state") |
415 | sch, err := conn.State.AddCharm(ch, curl, u, digest) |
416 | if err != nil { |
417 | return nil, fmt.Errorf("cannot add charm: %v", err) |
418 | |
419 | === removed directory 'log' |
420 | === removed file 'log/log.go' |
421 | --- log/log.go 2014-03-05 19:41:34 +0000 |
422 | +++ log/log.go 1970-01-01 00:00:00 +0000 |
423 | @@ -1,51 +0,0 @@ |
424 | -// Copyright 2011, 2012, 2013 Canonical Ltd. |
425 | -// Licensed under the AGPLv3, see LICENCE file for details. |
426 | - |
427 | -package log |
428 | - |
429 | -import ( |
430 | - "fmt" |
431 | - |
432 | - "github.com/juju/loggo" |
433 | -) |
434 | - |
435 | -var ( |
436 | - logger = loggo.GetLogger("juju") |
437 | -) |
438 | - |
439 | -// Errorf logs a message using the ERROR priority. |
440 | -func Errorf(format string, a ...interface{}) error { |
441 | - logger.Logf(loggo.ERROR, format, a...) |
442 | - return nil |
443 | -} |
444 | - |
445 | -// Warningf logs a message using the WARNING priority. |
446 | -func Warningf(format string, a ...interface{}) error { |
447 | - logger.Logf(loggo.WARNING, format, a...) |
448 | - return nil |
449 | -} |
450 | - |
451 | -// Noticef logs a message using the NOTICE priority. |
452 | -// Notice doesn't really convert to the loggo priorities... |
453 | -func Noticef(format string, a ...interface{}) error { |
454 | - logger.Logf(loggo.INFO, format, a...) |
455 | - return nil |
456 | -} |
457 | - |
458 | -// Infof logs a message using the INFO priority. |
459 | -func Infof(format string, a ...interface{}) error { |
460 | - logger.Logf(loggo.INFO, format, a...) |
461 | - return nil |
462 | -} |
463 | - |
464 | -// Debugf logs a message using the DEBUG priority. |
465 | -func Debugf(format string, a ...interface{}) (err error) { |
466 | - logger.Logf(loggo.DEBUG, format, a...) |
467 | - return nil |
468 | -} |
469 | - |
470 | -// Log the error and return an error with the same text. |
471 | -func LoggedErrorf(logger loggo.Logger, format string, a ...interface{}) error { |
472 | - logger.Logf(loggo.ERROR, format, a...) |
473 | - return fmt.Errorf(format, a...) |
474 | -} |
475 | |
476 | === removed file 'log/log_test.go' |
477 | --- log/log_test.go 2014-03-05 19:41:34 +0000 |
478 | +++ log/log_test.go 1970-01-01 00:00:00 +0000 |
479 | @@ -1,84 +0,0 @@ |
480 | -// Copyright 2011, 2012, 2013 Canonical Ltd. |
481 | -// Licensed under the AGPLv3, see LICENCE file for details. |
482 | - |
483 | -package log_test |
484 | - |
485 | -import ( |
486 | - "bytes" |
487 | - "fmt" |
488 | - "testing" |
489 | - "time" |
490 | - |
491 | - "github.com/juju/loggo" |
492 | - gc "launchpad.net/gocheck" |
493 | - |
494 | - "launchpad.net/juju-core/log" |
495 | -) |
496 | - |
497 | -func Test(t *testing.T) { |
498 | - gc.TestingT(t) |
499 | -} |
500 | - |
501 | -type testWriter struct { |
502 | - bytes.Buffer |
503 | -} |
504 | - |
505 | -type suite struct { |
506 | - writer *testWriter |
507 | - oldWriter loggo.Writer |
508 | - oldLevel loggo.Level |
509 | -} |
510 | - |
511 | -var _ = gc.Suite(&suite{}) |
512 | - |
513 | -func (t *testWriter) Write(level loggo.Level, module, filename string, line int, timestamp time.Time, message string) { |
514 | - t.Buffer.WriteString(fmt.Sprintf("%s %s %s", level, module, message)) |
515 | -} |
516 | - |
517 | -func (s *suite) SetUpTest(c *gc.C) { |
518 | - var err error |
519 | - s.writer = &testWriter{} |
520 | - s.oldWriter, s.oldLevel, err = loggo.RemoveWriter("default") |
521 | - c.Assert(err, gc.IsNil) |
522 | - err = loggo.RegisterWriter("test", s.writer, loggo.TRACE) |
523 | - c.Assert(err, gc.IsNil) |
524 | - logger := loggo.GetLogger("juju") |
525 | - logger.SetLogLevel(loggo.TRACE) |
526 | -} |
527 | - |
528 | -func (s *suite) TearDownTest(c *gc.C) { |
529 | - _, _, err := loggo.RemoveWriter("test") |
530 | - c.Assert(err, gc.IsNil) |
531 | - err = loggo.RegisterWriter("default", s.oldWriter, s.oldLevel) |
532 | - c.Assert(err, gc.IsNil) |
533 | -} |
534 | - |
535 | -func (s *suite) TestLoggerDebug(c *gc.C) { |
536 | - input := "Hello World" |
537 | - log.Debugf(input) |
538 | - c.Assert(s.writer.String(), gc.Equals, "DEBUG juju "+input) |
539 | -} |
540 | - |
541 | -func (s *suite) TestInfoLogger(c *gc.C) { |
542 | - input := "Hello World" |
543 | - log.Infof(input) |
544 | - c.Assert(s.writer.String(), gc.Equals, "INFO juju "+input) |
545 | -} |
546 | - |
547 | -func (s *suite) TestErrorLogger(c *gc.C) { |
548 | - input := "Hello World" |
549 | - log.Errorf(input) |
550 | - c.Assert(s.writer.String(), gc.Equals, "ERROR juju "+input) |
551 | -} |
552 | - |
553 | -func (s *suite) TestWarningLogger(c *gc.C) { |
554 | - input := "Hello World" |
555 | - log.Warningf(input) |
556 | - c.Assert(s.writer.String(), gc.Equals, "WARNING juju "+input) |
557 | -} |
558 | - |
559 | -func (s *suite) TestNoticeLogger(c *gc.C) { |
560 | - input := "Hello World" |
561 | - log.Noticef(input) |
562 | - c.Assert(s.writer.String(), gc.Equals, "INFO juju "+input) |
563 | -} |
564 | |
565 | === modified file 'provider/common/state.go' |
566 | --- provider/common/state.go 2014-04-10 06:31:18 +0000 |
567 | +++ provider/common/state.go 2014-04-17 05:11:55 +0000 |
568 | @@ -11,7 +11,6 @@ |
569 | "launchpad.net/juju-core/environs/bootstrap" |
570 | "launchpad.net/juju-core/environs/config" |
571 | "launchpad.net/juju-core/instance" |
572 | - "launchpad.net/juju-core/log" |
573 | "launchpad.net/juju-core/state" |
574 | "launchpad.net/juju-core/state/api" |
575 | ) |
576 | @@ -72,12 +71,12 @@ |
577 | } |
578 | // Wait for the DNS names of any of the instances |
579 | // to become available. |
580 | - log.Debugf("waiting for DNS name(s) of state server instances %v", st.StateInstances) |
581 | + logger.Debugf("waiting for DNS name(s) of state server instances %v", st.StateInstances) |
582 | var hostnames []string |
583 | for a := LongAttempt.Start(); len(hostnames) == 0 && a.Next(); { |
584 | insts, err := env.Instances(st.StateInstances) |
585 | if err != nil && err != environs.ErrPartialInstances { |
586 | - log.Debugf("error getting state instances: %v", err.Error()) |
587 | + logger.Debugf("error getting state instances: %v", err.Error()) |
588 | return nil, nil, err |
589 | } |
590 | hostnames = getDNSNames(insts) |
591 | |
592 | === modified file 'rpc/rpc_test.go' |
593 | --- rpc/rpc_test.go 2013-12-17 20:09:27 +0000 |
594 | +++ rpc/rpc_test.go 2014-04-17 05:11:55 +0000 |
595 | @@ -13,14 +13,16 @@ |
596 | stdtesting "testing" |
597 | "time" |
598 | |
599 | + "github.com/juju/loggo" |
600 | gc "launchpad.net/gocheck" |
601 | |
602 | - "launchpad.net/juju-core/log" |
603 | "launchpad.net/juju-core/rpc" |
604 | "launchpad.net/juju-core/rpc/jsoncodec" |
605 | "launchpad.net/juju-core/testing/testbase" |
606 | ) |
607 | |
608 | +var logger = loggo.GetLogger("juju.rpc") |
609 | + |
610 | type rpcSuite struct { |
611 | testbase.LoggingSuite |
612 | } |
613 | @@ -100,7 +102,7 @@ |
614 | } |
615 | |
616 | func (r *Root) InterfaceMethods(id string) (InterfaceMethods, error) { |
617 | - log.Infof("interface methods called") |
618 | + logger.Infof("interface methods called") |
619 | m, err := r.SimpleMethods(id) |
620 | if err != nil { |
621 | return nil, err |
622 | @@ -1002,7 +1004,7 @@ |
623 | if c.role != roleBoth && hdr.IsRequest() != (c.role == roleClient) { |
624 | panic(fmt.Errorf("codec role %v; header wrong type %#v", c.role, hdr)) |
625 | } |
626 | - log.Infof("send header: %#v; body: %#v", hdr, x) |
627 | + logger.Infof("send header: %#v; body: %#v", hdr, x) |
628 | return c.Codec.WriteMessage(hdr, x) |
629 | } |
630 | |
631 | @@ -1011,7 +1013,7 @@ |
632 | if err != nil { |
633 | return err |
634 | } |
635 | - log.Infof("got header %#v", hdr) |
636 | + logger.Infof("got header %#v", hdr) |
637 | if c.role != roleBoth && hdr.IsRequest() == (c.role == roleClient) { |
638 | panic(fmt.Errorf("codec role %v; read wrong type %#v", c.role, hdr)) |
639 | } |
640 | @@ -1031,9 +1033,9 @@ |
641 | if err != nil { |
642 | return err |
643 | } |
644 | - log.Infof("got response body: %q", m) |
645 | + logger.Infof("got response body: %q", m) |
646 | err = json.Unmarshal(m, r) |
647 | - log.Infof("unmarshalled into %#v", r) |
648 | + logger.Infof("unmarshalled into %#v", r) |
649 | return err |
650 | } |
651 | |
652 | |
653 | === modified file 'state/api/watcher/watcher.go' |
654 | --- state/api/watcher/watcher.go 2014-04-15 13:04:30 +0000 |
655 | +++ state/api/watcher/watcher.go 2014-04-17 05:11:55 +0000 |
656 | @@ -4,15 +4,17 @@ |
657 | package watcher |
658 | |
659 | import ( |
660 | + "github.com/juju/loggo" |
661 | "sync" |
662 | |
663 | "launchpad.net/tomb" |
664 | |
665 | - "launchpad.net/juju-core/log" |
666 | "launchpad.net/juju-core/state/api/base" |
667 | "launchpad.net/juju-core/state/api/params" |
668 | ) |
669 | |
670 | +var logger = loggo.GetLogger("juju.state.api.watcher") |
671 | + |
672 | // commonWatcher implements common watcher logic in one place to |
673 | // reduce code duplication, but it's not in fact a complete watcher; |
674 | // it's intended for embedding. |
675 | @@ -63,7 +65,7 @@ |
676 | defer w.wg.Done() |
677 | <-w.tomb.Dying() |
678 | if err := w.call("Stop", nil); err != nil { |
679 | - log.Errorf("state/api: error trying to stop watcher: %v", err) |
680 | + logger.Errorf("error trying to stop watcher: %v", err) |
681 | } |
682 | }() |
683 | w.wg.Add(1) |
684 | |
685 | === modified file 'state/apiserver/charmrevisionupdater/updater.go' |
686 | --- state/apiserver/charmrevisionupdater/updater.go 2014-03-28 11:17:33 +0000 |
687 | +++ state/apiserver/charmrevisionupdater/updater.go 2014-04-17 05:11:55 +0000 |
688 | @@ -7,7 +7,7 @@ |
689 | "github.com/juju/loggo" |
690 | |
691 | "launchpad.net/juju-core/charm" |
692 | - "launchpad.net/juju-core/log" |
693 | + "launchpad.net/juju-core/errors" |
694 | "launchpad.net/juju-core/state" |
695 | "launchpad.net/juju-core/state/api/params" |
696 | "launchpad.net/juju-core/state/apiserver/common" |
697 | @@ -108,7 +108,7 @@ |
698 | store := charm.Store.WithJujuAttrs("environment_uuid=" + uuid) |
699 | revInfo, err := store.Latest(curls...) |
700 | if err != nil { |
701 | - return nil, log.LoggedErrorf(logger, "finding charm revision info: %v", err) |
702 | + return nil, errors.LoggedErrorf(logger, "finding charm revision info: %v", err) |
703 | } |
704 | var latestCurls []*charm.URL |
705 | for i, info := range revInfo { |
706 | |
707 | === modified file 'state/apiserver/common/password.go' |
708 | --- state/apiserver/common/password.go 2014-03-10 08:27:32 +0000 |
709 | +++ state/apiserver/common/password.go 2014-04-17 05:11:55 +0000 |
710 | @@ -4,11 +4,14 @@ |
711 | package common |
712 | |
713 | import ( |
714 | - "launchpad.net/juju-core/log" |
715 | + "github.com/juju/loggo" |
716 | + |
717 | "launchpad.net/juju-core/state" |
718 | "launchpad.net/juju-core/state/api/params" |
719 | ) |
720 | |
721 | +var logger = loggo.GetLogger("juju.state.apiserver.common") |
722 | + |
723 | // PasswordChanger implements a common SetPasswords method for use by |
724 | // various facades. |
725 | type PasswordChanger struct { |
726 | @@ -61,7 +64,7 @@ |
727 | if err := entity0.SetMongoPassword(password); err != nil { |
728 | return err |
729 | } |
730 | - log.Infof("setting mongo password for %q", entity.Tag()) |
731 | + logger.Infof("setting mongo password for %q", entity.Tag()) |
732 | return nil |
733 | } |
734 | return NotSupportedError(entity.Tag(), "mongo access") |
735 | @@ -91,7 +94,7 @@ |
736 | } |
737 | if err == nil { |
738 | err = entity.SetPassword(password) |
739 | - log.Infof("setting password for %q", tag) |
740 | + logger.Infof("setting password for %q", tag) |
741 | } |
742 | return err |
743 | } |
744 | |
745 | === modified file 'state/apiserver/common/resource.go' |
746 | --- state/apiserver/common/resource.go 2013-09-13 14:48:13 +0000 |
747 | +++ state/apiserver/common/resource.go 2014-04-17 05:11:55 +0000 |
748 | @@ -6,8 +6,6 @@ |
749 | import ( |
750 | "strconv" |
751 | "sync" |
752 | - |
753 | - "launchpad.net/juju-core/log" |
754 | ) |
755 | |
756 | // Resource represents any resource that should be cleaned up when an |
757 | @@ -80,7 +78,7 @@ |
758 | defer rs.mu.Unlock() |
759 | for _, r := range rs.resources { |
760 | if err := r.Stop(); err != nil { |
761 | - log.Errorf("state/api: error stopping %T resource: %v", r, err) |
762 | + logger.Errorf("error stopping %T resource: %v", r, err) |
763 | } |
764 | } |
765 | rs.resources = make(map[string]Resource) |
766 | |
767 | === modified file 'state/presence/presence.go' |
768 | --- state/presence/presence.go 2014-03-28 15:16:19 +0000 |
769 | +++ state/presence/presence.go 2014-04-17 05:11:55 +0000 |
770 | @@ -13,17 +13,13 @@ |
771 | "sync" |
772 | "time" |
773 | |
774 | + "github.com/juju/loggo" |
775 | "labix.org/v2/mgo" |
776 | "labix.org/v2/mgo/bson" |
777 | "launchpad.net/tomb" |
778 | - |
779 | - "launchpad.net/juju-core/log" |
780 | ) |
781 | |
782 | -// Debug specifies whether the package will log debug |
783 | -// messages. |
784 | -// TODO(rog) allow debug level setting in the log package. |
785 | -var Debug = false |
786 | +var logger = loggo.GetLogger("juju.state.presence") |
787 | |
788 | // The implementation works by assigning a unique sequence number to each |
789 | // pinger that is alive, and the pinger is then responsible for |
790 | @@ -266,7 +262,7 @@ |
791 | // handle deals with requests delivered by the public API |
792 | // onto the background watcher goroutine. |
793 | func (w *Watcher) handle(req interface{}) { |
794 | - debugf("state/presence: got request: %#v", req) |
795 | + logger.Tracef("got request: %#v", req) |
796 | switch r := req.(type) { |
797 | case reqSync: |
798 | w.next = time.After(0) |
799 | @@ -366,7 +362,7 @@ |
800 | } |
801 | seq := k + i |
802 | dead[seq] = true |
803 | - debugf("state/presence: found seq=%d dead", seq) |
804 | + logger.Tracef("found seq=%d dead", seq) |
805 | } |
806 | } |
807 | } |
808 | @@ -400,7 +396,7 @@ |
809 | if being, ok = allBeings[seq]; !ok { |
810 | err := w.beings.Find(bson.D{{"_id", seq}}).One(&being) |
811 | if err == mgo.ErrNotFound { |
812 | - debugf("state/presence: found seq=%d unowned", seq) |
813 | + logger.Tracef("found seq=%d unowned", seq) |
814 | continue |
815 | } else if err != nil { |
816 | return err |
817 | @@ -418,7 +414,7 @@ |
818 | if cur > 0 || dead[seq] { |
819 | continue |
820 | } |
821 | - debugf("state/presence: found seq=%d alive with key %q", seq, being.Key) |
822 | + logger.Tracef("found seq=%d alive with key %q", seq, being.Key) |
823 | for _, ch := range w.watches[being.Key] { |
824 | w.pending = append(w.pending, event{ch, being.Key, true}) |
825 | } |
826 | @@ -474,7 +470,7 @@ |
827 | if err := p.prepare(); err != nil { |
828 | return err |
829 | } |
830 | - debugf("state/presence: starting pinger for %q with seq=%d", p.beingKey, p.beingSeq) |
831 | + logger.Tracef("starting pinger for %q with seq=%d", p.beingKey, p.beingSeq) |
832 | if err := p.ping(); err != nil { |
833 | return err |
834 | } |
835 | @@ -493,7 +489,7 @@ |
836 | p.mu.Lock() |
837 | defer p.mu.Unlock() |
838 | if p.started { |
839 | - debugf("state/presence: stopping pinger for %q with seq=%d", p.beingKey, p.beingSeq) |
840 | + logger.Tracef("stopping pinger for %q with seq=%d", p.beingKey, p.beingSeq) |
841 | } |
842 | p.tomb.Kill(nil) |
843 | err := p.tomb.Wait() |
844 | @@ -508,10 +504,10 @@ |
845 | p.mu.Lock() |
846 | defer p.mu.Unlock() |
847 | if p.started { |
848 | - debugf("state/presence: killing pinger for %q (was started)", p.beingKey) |
849 | + logger.Tracef("killing pinger for %q (was started)", p.beingKey) |
850 | return p.killStarted() |
851 | } |
852 | - debugf("state/presence: killing pinger for %q (was stopped)", p.beingKey) |
853 | + logger.Tracef("killing pinger for %q (was stopped)", p.beingKey) |
854 | return p.killStopped() |
855 | } |
856 | |
857 | @@ -586,7 +582,7 @@ |
858 | // ping records updates the current time slot with the |
859 | // sequence in use by the pinger. |
860 | func (p *Pinger) ping() error { |
861 | - debugf("state/presence: pinging %q with seq=%d", p.beingKey, p.beingSeq) |
862 | + logger.Tracef("pinging %q with seq=%d", p.beingKey, p.beingSeq) |
863 | if p.delta == 0 { |
864 | delta, err := clockDelta(p.base) |
865 | if err != nil { |
866 | @@ -712,7 +708,7 @@ |
867 | } |
868 | fakeOffset = offset |
869 | fakeMutex.Unlock() |
870 | - log.Infof("state/presence: Faking presence to time slot %d", offset) |
871 | + logger.Infof("faking presence to time slot %d", offset) |
872 | } |
873 | |
874 | // realTimeSlot disables the hardcoding introduced by fakeTimeSlot. |
875 | @@ -721,7 +717,7 @@ |
876 | fakeNow = time.Time{} |
877 | fakeOffset = 0 |
878 | fakeMutex.Unlock() |
879 | - log.Infof("state/presence: Not faking presence time. Real time slot in use.") |
880 | + logger.Infof("not faking presence time. Real time slot in use.") |
881 | } |
882 | |
883 | func seqsC(base *mgo.Collection) *mgo.Collection { |
884 | @@ -735,9 +731,3 @@ |
885 | func pingsC(base *mgo.Collection) *mgo.Collection { |
886 | return base.Database.C(base.Name + ".pings") |
887 | } |
888 | - |
889 | -func debugf(f string, a ...interface{}) { |
890 | - if Debug { |
891 | - log.Debugf(f, a...) |
892 | - } |
893 | -} |
894 | |
895 | === modified file 'state/watcher/watcher.go' |
896 | --- state/watcher/watcher.go 2014-04-09 09:42:39 +0000 |
897 | +++ state/watcher/watcher.go 2014-04-17 05:11:55 +0000 |
898 | @@ -10,17 +10,13 @@ |
899 | "fmt" |
900 | "time" |
901 | |
902 | + "github.com/juju/loggo" |
903 | "labix.org/v2/mgo" |
904 | "labix.org/v2/mgo/bson" |
905 | "launchpad.net/tomb" |
906 | - |
907 | - "launchpad.net/juju-core/log" |
908 | ) |
909 | |
910 | -// Debug specifies whether the package will log debug |
911 | -// messages. |
912 | -// TODO(rog) allow debug level setting in the log package. |
913 | -var Debug = false |
914 | +var logger = loggo.GetLogger("juju.state.watcher") |
915 | |
916 | // A Watcher can watch any number of collections and documents for changes. |
917 | type Watcher struct { |
918 | @@ -276,7 +272,7 @@ |
919 | // handle deals with requests delivered by the public API |
920 | // onto the background watcher goroutine. |
921 | func (w *Watcher) handle(req interface{}) { |
922 | - debugf("state/watcher: got request: %#v", req) |
923 | + logger.Tracef("got request: %#v", req) |
924 | switch r := req.(type) { |
925 | case reqSync: |
926 | w.needSync = true |
927 | @@ -354,7 +350,7 @@ |
928 | var entry bson.D |
929 | for iter.Next(&entry) { |
930 | if len(entry) == 0 { |
931 | - debugf("state/watcher: got empty changelog document") |
932 | + logger.Tracef("got empty changelog document") |
933 | } |
934 | id := entry[0] |
935 | if id.Name != "_id" { |
936 | @@ -367,7 +363,7 @@ |
937 | if id.Value == lastId { |
938 | break |
939 | } |
940 | - debugf("state/watcher: got changelog document: %#v", entry) |
941 | + logger.Tracef("got changelog document: %#v", entry) |
942 | for _, c := range entry[1:] { |
943 | // See txn's Runner.ChangeLog for the structure of log entries. |
944 | var d, r []interface{} |
945 | @@ -381,7 +377,7 @@ |
946 | } |
947 | } |
948 | if len(d) == 0 || len(d) != len(r) { |
949 | - log.Warningf("state/watcher: changelog has invalid collection document: %#v", c) |
950 | + logger.Warningf("changelog has invalid collection document: %#v", c) |
951 | continue |
952 | } |
953 | for i := len(d) - 1; i >= 0; i-- { |
954 | @@ -392,7 +388,7 @@ |
955 | seen[key] = true |
956 | revno, ok := r[i].(int64) |
957 | if !ok { |
958 | - log.Warningf("state/watcher: changelog has revno with type %T: %#v", r[i], r[i]) |
959 | + logger.Warningf("changelog has revno with type %T: %#v", r[i], r[i]) |
960 | continue |
961 | } |
962 | if revno < 0 { |
963 | @@ -425,9 +421,3 @@ |
964 | } |
965 | return nil |
966 | } |
967 | - |
968 | -func debugf(f string, a ...interface{}) { |
969 | - if Debug { |
970 | - log.Debugf(f, a...) |
971 | - } |
972 | -} |
973 | |
974 | === modified file 'store/lpad.go' |
975 | --- store/lpad.go 2014-03-20 19:51:05 +0000 |
976 | +++ store/lpad.go 2014-04-17 05:11:55 +0000 |
977 | @@ -11,7 +11,6 @@ |
978 | "launchpad.net/lpad" |
979 | |
980 | "launchpad.net/juju-core/charm" |
981 | - "launchpad.net/juju-core/log" |
982 | ) |
983 | |
984 | type PublishBranchError struct { |
985 | @@ -55,13 +54,13 @@ |
986 | burl, curl, err := uniqueNameURLs(tip.UniqueName) |
987 | if err != nil { |
988 | errs = append(errs, PublishBranchError{tip.UniqueName, err}) |
989 | - log.Errorf("%v\n", err) |
990 | + logger.Errorf("%v", err) |
991 | continue |
992 | } |
993 | - log.Infof("----- %s\n", burl) |
994 | + logger.Infof("%s\n", burl) |
995 | if tip.Revision == "" { |
996 | errs = append(errs, PublishBranchError{burl, fmt.Errorf("branch has no revisions")}) |
997 | - log.Errorf("branch has no revisions\n") |
998 | + logger.Errorf("branch has no revisions\n") |
999 | continue |
1000 | } |
1001 | // Charm is published in the personal URL and in any explicitly |
1002 | @@ -84,7 +83,7 @@ |
1003 | } |
1004 | if err != nil { |
1005 | errs = append(errs, PublishBranchError{burl, err}) |
1006 | - log.Errorf("%v\n", err) |
1007 | + logger.Errorf("%v", err) |
1008 | } |
1009 | } |
1010 | if errs != nil { |
1011 | |
1012 | === modified file 'store/server.go' |
1013 | --- store/server.go 2014-03-25 18:57:36 +0000 |
1014 | +++ store/server.go 2014-04-17 05:11:55 +0000 |
1015 | @@ -13,7 +13,6 @@ |
1016 | "time" |
1017 | |
1018 | "launchpad.net/juju-core/charm" |
1019 | - "launchpad.net/juju-core/log" |
1020 | ) |
1021 | |
1022 | const DefaultSeries = "precise" |
1023 | @@ -132,7 +131,7 @@ |
1024 | _, err = w.Write(data) |
1025 | } |
1026 | if err != nil { |
1027 | - log.Errorf("store: cannot write content: %v", err) |
1028 | + logger.Errorf("cannot write content: %v", err) |
1029 | w.WriteHeader(http.StatusInternalServerError) |
1030 | return |
1031 | } |
1032 | @@ -180,7 +179,7 @@ |
1033 | _, err = w.Write(data) |
1034 | } |
1035 | if err != nil { |
1036 | - log.Errorf("store: cannot write content: %v", err) |
1037 | + logger.Errorf("cannot write content: %v", err) |
1038 | w.WriteHeader(http.StatusInternalServerError) |
1039 | return |
1040 | } |
1041 | @@ -202,7 +201,7 @@ |
1042 | } |
1043 | if err != nil { |
1044 | w.WriteHeader(http.StatusInternalServerError) |
1045 | - log.Errorf("store: cannot open charm %q: %v", curl, err) |
1046 | + logger.Errorf("cannot open charm %q: %v", curl, err) |
1047 | return |
1048 | } |
1049 | if statsEnabled(r) { |
1050 | @@ -214,7 +213,7 @@ |
1051 | w.Header().Set("Content-Length", strconv.FormatInt(info.BundleSize(), 10)) |
1052 | _, err = io.Copy(w, rc) |
1053 | if err != nil { |
1054 | - log.Errorf("store: failed to stream charm %q: %v", curl, err) |
1055 | + logger.Errorf("failed to stream charm %q: %v", curl, err) |
1056 | } |
1057 | } |
1058 | |
1059 | @@ -303,7 +302,7 @@ |
1060 | |
1061 | entries, err := s.store.Counters(&req) |
1062 | if err != nil { |
1063 | - log.Errorf("store: cannot query counters: %v", err) |
1064 | + logger.Errorf("cannot query counters: %v", err) |
1065 | w.WriteHeader(http.StatusInternalServerError) |
1066 | return |
1067 | } |
1068 | @@ -332,7 +331,7 @@ |
1069 | w.Header().Set("Content-Length", strconv.Itoa(len(buf))) |
1070 | _, err = w.Write(buf) |
1071 | if err != nil { |
1072 | - log.Errorf("store: cannot write content: %v", err) |
1073 | + logger.Errorf("cannot write content: %v", err) |
1074 | w.WriteHeader(http.StatusInternalServerError) |
1075 | } |
1076 | } |
1077 | |
1078 | === modified file 'store/store.go' |
1079 | --- store/store.go 2014-04-09 09:42:39 +0000 |
1080 | +++ store/store.go 2014-04-17 05:11:55 +0000 |
1081 | @@ -19,13 +19,15 @@ |
1082 | "sync" |
1083 | "time" |
1084 | |
1085 | + "github.com/juju/loggo" |
1086 | "labix.org/v2/mgo" |
1087 | "labix.org/v2/mgo/bson" |
1088 | |
1089 | "launchpad.net/juju-core/charm" |
1090 | - "launchpad.net/juju-core/log" |
1091 | ) |
1092 | |
1093 | +var logger = loggo.GetLogger("juju.store") |
1094 | + |
1095 | // The following MongoDB collections are currently used: |
1096 | // |
1097 | // juju.events - Log of events relating to the lifecycle of charms |
1098 | @@ -65,11 +67,11 @@ |
1099 | // server at the given address (as expected by the Mongo function in the |
1100 | // labix.org/v2/mgo package). |
1101 | func Open(mongoAddr string) (store *Store, err error) { |
1102 | - log.Infof("store: Store opened. Connecting to: %s", mongoAddr) |
1103 | + logger.Infof("store opened, connecting to: %s", mongoAddr) |
1104 | store = &Store{} |
1105 | session, err := mgo.Dial(mongoAddr) |
1106 | if err != nil { |
1107 | - log.Errorf("store: Error connecting to MongoDB: %v", err) |
1108 | + logger.Errorf("error connecting to MongoDB: %v", err) |
1109 | return nil, err |
1110 | } |
1111 | |
1112 | @@ -110,7 +112,7 @@ |
1113 | for _, idx := range indexes { |
1114 | err := idx.c.EnsureIndex(idx.i) |
1115 | if err != nil { |
1116 | - log.Errorf("store: Error ensuring stat.counters index: %v", err) |
1117 | + logger.Errorf("error ensuring stat.counters index: %v", err) |
1118 | return err |
1119 | } |
1120 | } |
1121 | @@ -552,7 +554,7 @@ |
1122 | // ErrRedundantUpdate is returned if all of the provided urls are |
1123 | // already associated to that digest. |
1124 | func (s *Store) CharmPublisher(urls []*charm.URL, digest string) (p *CharmPublisher, err error) { |
1125 | - log.Infof("store: Trying to add charms %v with key %q...", urls, digest) |
1126 | + logger.Infof("trying to add charms %v with key %q...", urls, digest) |
1127 | if err = mustLackRevision("CharmPublisher", urls...); err != nil { |
1128 | return |
1129 | } |
1130 | @@ -567,16 +569,16 @@ |
1131 | urlStr := urls[i].String() |
1132 | err = charms.Find(bson.D{{"urls", urlStr}}).Sort("-revision").One(&doc) |
1133 | if err == mgo.ErrNotFound { |
1134 | - log.Infof("store: Charm %s not yet in the store.", urls[i]) |
1135 | + logger.Infof("charm %s not yet in the store.", urls[i]) |
1136 | newKey = true |
1137 | continue |
1138 | } |
1139 | if doc.Digest != digest { |
1140 | - log.Infof("store: Charm %s is out of date with revision key %q.", urlStr, digest) |
1141 | + logger.Infof("charm %s is out of date with revision key %q.", urlStr, digest) |
1142 | newKey = true |
1143 | } |
1144 | if err != nil { |
1145 | - log.Errorf("store: Unknown error looking for charm %s: %s", urlStr, err) |
1146 | + logger.Errorf("unknown error looking for charm %s: %s", urlStr, err) |
1147 | return |
1148 | } |
1149 | if doc.Revision > maxRev { |
1150 | @@ -584,12 +586,12 @@ |
1151 | } |
1152 | } |
1153 | if !newKey { |
1154 | - log.Infof("store: All charms have revision key %q. Nothing to update.", digest) |
1155 | + logger.Infof("all charms have revision key %q. Nothing to update.", digest) |
1156 | err = ErrRedundantUpdate |
1157 | return |
1158 | } |
1159 | revision := maxRev + 1 |
1160 | - log.Infof("store: Preparing writer to add charms with revision %d.", revision) |
1161 | + logger.Infof("preparing writer to add charms with revision %d.", revision) |
1162 | w := &charmWriter{ |
1163 | store: s, |
1164 | urls: urls, |
1165 | @@ -618,11 +620,11 @@ |
1166 | w.session = w.store.session.Copy() |
1167 | w.file, err = w.session.CharmFS().Create("") |
1168 | if err != nil { |
1169 | - log.Errorf("store: Failed to create GridFS file: %v", err) |
1170 | + logger.Errorf("failed to create GridFS file: %v", err) |
1171 | return 0, err |
1172 | } |
1173 | w.sha256 = sha256.New() |
1174 | - log.Infof("store: Creating GridFS file with id %q...", w.file.Id().(bson.ObjectId).Hex()) |
1175 | + logger.Infof("creating GridFS file with id %q...", w.file.Id().(bson.ObjectId).Hex()) |
1176 | } |
1177 | _, err = w.sha256.Write(data) |
1178 | if err != nil { |
1179 | @@ -652,7 +654,7 @@ |
1180 | size := w.file.Size() |
1181 | err := w.file.Close() |
1182 | if err != nil { |
1183 | - log.Errorf("store: Failed to close GridFS file: %v", err) |
1184 | + logger.Errorf("failed to close GridFS file: %v", err) |
1185 | return err |
1186 | } |
1187 | charms := w.session.Charms() |
1188 | @@ -669,7 +671,7 @@ |
1189 | } |
1190 | if err = charms.Insert(&charm); err != nil { |
1191 | err = maybeConflict(err) |
1192 | - log.Errorf("store: Failed to insert new revision of charm %v: %v", w.urls, err) |
1193 | + logger.Errorf("failed to insert new revision of charm %v: %v", w.urls, err) |
1194 | return err |
1195 | } |
1196 | return nil |
1197 | @@ -782,7 +784,7 @@ |
1198 | session := s.session.Copy() |
1199 | defer session.Close() |
1200 | |
1201 | - log.Debugf("store: Retrieving charm info for %s", url) |
1202 | + logger.Debugf("retrieving charm info for %s", url) |
1203 | rev := url.Revision |
1204 | url = url.WithRevision(-1) |
1205 | |
1206 | @@ -799,7 +801,7 @@ |
1207 | q = q.Limit(n) |
1208 | } |
1209 | if err := q.All(&cdocs); err != nil { |
1210 | - log.Errorf("store: Failed to find charm %s: %v", url, err) |
1211 | + logger.Errorf("failed to find charm %s: %v", url, err) |
1212 | return nil, ErrNotFound |
1213 | } |
1214 | var infos []*CharmInfo |
1215 | @@ -821,7 +823,7 @@ |
1216 | func (s *Store) CharmInfo(url *charm.URL) (*CharmInfo, error) { |
1217 | infos, err := s.getRevisions(url, 1) |
1218 | if err != nil { |
1219 | - log.Errorf("store: Failed to find charm %s: %v", url, err) |
1220 | + logger.Errorf("failed to find charm %s: %v", url, err) |
1221 | return nil, ErrNotFound |
1222 | } else if len(infos) < 1 { |
1223 | return nil, ErrNotFound |
1224 | @@ -832,7 +834,7 @@ |
1225 | // OpenCharm opens for reading via rc the charm currently available at url. |
1226 | // rc must be closed after dealing with it or resources will leak. |
1227 | func (s *Store) OpenCharm(url *charm.URL) (info *CharmInfo, rc io.ReadCloser, err error) { |
1228 | - log.Debugf("store: Opening charm %s", url) |
1229 | + logger.Debugf("opening charm %s", url) |
1230 | info, err = s.CharmInfo(url) |
1231 | if err != nil { |
1232 | return nil, nil, err |
1233 | @@ -840,7 +842,7 @@ |
1234 | session := s.session.Copy() |
1235 | file, err := session.CharmFS().OpenId(info.fileId) |
1236 | if err != nil { |
1237 | - log.Errorf("store: Failed to open GridFS file for charm %s: %v", url, err) |
1238 | + logger.Errorf("failed to open GridFS file for charm %s: %v", url, err) |
1239 | session.Close() |
1240 | return nil, nil, err |
1241 | } |
1242 | @@ -851,7 +853,7 @@ |
1243 | // DeleteCharm deletes the charms matching url. If no revision is specified, |
1244 | // all revisions of the charm are deleted. |
1245 | func (s *Store) DeleteCharm(url *charm.URL) ([]*CharmInfo, error) { |
1246 | - log.Debugf("store: Deleting charm %s", url) |
1247 | + logger.Debugf("deleting charm %s", url) |
1248 | infos, err := s.getRevisions(url, 0) |
1249 | if err != nil { |
1250 | return nil, err |
1251 | @@ -866,12 +868,12 @@ |
1252 | err := session.Charms().Remove( |
1253 | bson.D{{"urls", url.WithRevision(-1)}, {"revision", info.Revision()}}) |
1254 | if err != nil { |
1255 | - log.Errorf("store: Failed to delete metadata for charm %s: %v", url, err) |
1256 | + logger.Errorf("failed to delete metadata for charm %s: %v", url, err) |
1257 | return deleted, err |
1258 | } |
1259 | err = session.CharmFS().RemoveId(info.fileId) |
1260 | if err != nil { |
1261 | - log.Errorf("store: Failed to delete GridFS file for charm %s: %v", url, err) |
1262 | + logger.Errorf("failed to delete GridFS file for charm %s: %v", url, err) |
1263 | return deleted, err |
1264 | } |
1265 | deleted = append(deleted, info) |
1266 | @@ -940,7 +942,7 @@ |
1267 | // Unlock removes the previously acquired server-side lock that prevents |
1268 | // other processes from attempting to update a set of charm URLs. |
1269 | func (l *UpdateLock) Unlock() { |
1270 | - log.Debugf("store: Unlocking charms for future updates: %v", l.keys) |
1271 | + logger.Debugf("unlocking charms for future updates: %v", l.keys) |
1272 | defer l.locks.Database.Session.Close() |
1273 | for i := len(l.keys) - 1; i >= 0; i-- { |
1274 | // Using time below ensures only the proper lock is removed. |
1275 | @@ -956,19 +958,19 @@ |
1276 | // locks and aborts with an error. |
1277 | func (l *UpdateLock) tryLock() error { |
1278 | for i, key := range l.keys { |
1279 | - log.Debugf("store: Trying to lock charm %s for updates...", key) |
1280 | + logger.Debugf("trying to lock charm %s for updates...", key) |
1281 | doc := bson.D{{"_id", key}, {"time", l.time}} |
1282 | err := l.locks.Insert(doc) |
1283 | if err == nil { |
1284 | - log.Debugf("store: Charm %s is now locked for updates.", key) |
1285 | + logger.Debugf("charm %s is now locked for updates.", key) |
1286 | continue |
1287 | } |
1288 | if lerr, ok := err.(*mgo.LastError); ok && lerr.Code == 11000 { |
1289 | - log.Debugf("store: Charm %s is locked. Trying to expire lock.", key) |
1290 | + logger.Debugf("charm %s is locked. Trying to expire lock.", key) |
1291 | l.tryExpire(key) |
1292 | err = l.locks.Insert(doc) |
1293 | if err == nil { |
1294 | - log.Debugf("store: Charm %s is now locked for updates.", key) |
1295 | + logger.Debugf("charm %s is now locked for updates.", key) |
1296 | continue |
1297 | } |
1298 | } |
1299 | @@ -979,7 +981,7 @@ |
1300 | l.locks.Remove(bson.D{{"_id", l.keys[j]}, {"time", l.time}}) |
1301 | } |
1302 | err = maybeConflict(err) |
1303 | - log.Errorf("store: Can't lock charms %v for updating: %v", l.keys, err) |
1304 | + logger.Errorf("can't lock charms %v for updating: %v", l.keys, err) |
1305 | return err |
1306 | } |
1307 | return nil |
1308 | @@ -1073,7 +1075,7 @@ |
1309 | |
1310 | // LogCharmEvent records an event related to one or more charm URLs. |
1311 | func (s *Store) LogCharmEvent(event *CharmEvent) (err error) { |
1312 | - log.Infof("store: Adding charm event for %v with key %q: %s", event.URLs, event.Digest, event.Kind) |
1313 | + logger.Infof("adding charm event for %v with key %q: %s", event.URLs, event.Digest, event.Kind) |
1314 | if err = mustLackRevision("LogCharmEvent", event.URLs...); err != nil { |
1315 | return |
1316 | } |
1317 | @@ -1126,7 +1128,7 @@ |
1318 | for _, url := range urls { |
1319 | if url.Revision != -1 { |
1320 | err := fmt.Errorf("%s: got charm URL with revision: %s", context, url) |
1321 | - log.Errorf("store: %v", err) |
1322 | + logger.Errorf("%v", err) |
1323 | return err |
1324 | } |
1325 | } |
1326 | |
1327 | === modified file 'testing/mgo.go' |
1328 | --- testing/mgo.go 2014-04-11 17:51:58 +0000 |
1329 | +++ testing/mgo.go 2014-04-17 05:11:55 +0000 |
1330 | @@ -24,7 +24,6 @@ |
1331 | gc "launchpad.net/gocheck" |
1332 | |
1333 | "launchpad.net/juju-core/cert" |
1334 | - "launchpad.net/juju-core/log" |
1335 | "launchpad.net/juju-core/utils" |
1336 | ) |
1337 | |
1338 | @@ -159,9 +158,9 @@ |
1339 | if err == nil || exitErr != nil && exitErr.Exited() { |
1340 | // mongodb has exited without being killed, so print the |
1341 | // last few lines of its log output. |
1342 | - log.Errorf("mongodb has exited without being killed") |
1343 | + logger.Errorf("mongodb has exited without being killed") |
1344 | for _, line := range lines { |
1345 | - log.Errorf("mongod: %s", line) |
1346 | + logger.Errorf("mongod: %s", line) |
1347 | } |
1348 | } |
1349 | close(exited) |
1350 | @@ -349,14 +348,14 @@ |
1351 | if !ok { |
1352 | // We restart it to regain access. This should only |
1353 | // happen when tests fail. |
1354 | - log.Noticef("testing: restarting MongoDB server after unauthorized access") |
1355 | + logger.Infof("restarting MongoDB server after unauthorized access") |
1356 | inst.Destroy() |
1357 | if err := inst.Start(inst.ssl); err != nil { |
1358 | panic(err) |
1359 | } |
1360 | return |
1361 | } |
1362 | - log.Infof("Reset successfully reset admin password") |
1363 | + logger.Infof("reset successfully reset admin password") |
1364 | for _, name := range dbnames { |
1365 | switch name { |
1366 | case "local", "config": |
1367 | @@ -391,7 +390,7 @@ |
1368 | } { |
1369 | admin := session.DB("admin") |
1370 | if err := admin.Login("admin", password); err != nil { |
1371 | - log.Infof("failed to log in with password %q", password) |
1372 | + logger.Infof("failed to log in with password %q", password) |
1373 | continue |
1374 | } |
1375 | dbnames, err := session.DatabaseNames() |
1376 | @@ -404,7 +403,7 @@ |
1377 | if !isUnauthorized(err) { |
1378 | panic(err) |
1379 | } |
1380 | - log.Infof("unauthorized access when getting database names; password %q", password) |
1381 | + logger.Infof("unauthorized access when getting database names; password %q", password) |
1382 | } |
1383 | return nil, false |
1384 | } |
1385 | |
1386 | === modified file 'testing/testbase/log_test.go' |
1387 | --- testing/testbase/log_test.go 2013-09-20 02:10:46 +0000 |
1388 | +++ testing/testbase/log_test.go 2014-04-17 05:11:55 +0000 |
1389 | @@ -4,12 +4,14 @@ |
1390 | package testbase_test |
1391 | |
1392 | import ( |
1393 | + "github.com/juju/loggo" |
1394 | gc "launchpad.net/gocheck" |
1395 | |
1396 | - "launchpad.net/juju-core/log" |
1397 | "launchpad.net/juju-core/testing/testbase" |
1398 | ) |
1399 | |
1400 | +var logger = loggo.GetLogger("juju.logsuite") |
1401 | + |
1402 | var _ = gc.Suite(&logSuite{}) |
1403 | |
1404 | type logSuite struct { |
1405 | @@ -18,8 +20,8 @@ |
1406 | |
1407 | func (s *logSuite) SetUpSuite(c *gc.C) { |
1408 | s.LoggingSuite.SetUpSuite(c) |
1409 | - log.Infof("testing-SetUpSuite") |
1410 | - c.Assert(c.GetTestLog(), gc.Matches, ".*INFO juju testing-SetUpSuite\n") |
1411 | + logger.Infof("testing-SetUpSuite") |
1412 | + c.Assert(c.GetTestLog(), gc.Matches, ".*INFO juju.logsuite testing-SetUpSuite\n") |
1413 | } |
1414 | |
1415 | func (s *logSuite) TearDownSuite(c *gc.C) { |
1416 | @@ -27,25 +29,25 @@ |
1417 | // log output is printed, as the logger is printing |
1418 | // a previously set up *gc.C. We print a message |
1419 | // anyway so that we can manually verify it. |
1420 | - log.Infof("testing-TearDownSuite") |
1421 | + logger.Infof("testing-TearDownSuite") |
1422 | } |
1423 | |
1424 | func (s *logSuite) SetUpTest(c *gc.C) { |
1425 | s.LoggingSuite.SetUpTest(c) |
1426 | - log.Infof("testing-SetUpTest") |
1427 | - c.Assert(c.GetTestLog(), gc.Matches, ".*INFO juju testing-SetUpTest\n") |
1428 | + logger.Infof("testing-SetUpTest") |
1429 | + c.Assert(c.GetTestLog(), gc.Matches, ".*INFO juju.logsuite testing-SetUpTest\n") |
1430 | } |
1431 | |
1432 | func (s *logSuite) TearDownTest(c *gc.C) { |
1433 | // The same applies here as to TearDownSuite. |
1434 | - log.Infof("testing-TearDownTest") |
1435 | + logger.Infof("testing-TearDownTest") |
1436 | s.LoggingSuite.TearDownTest(c) |
1437 | } |
1438 | |
1439 | func (s *logSuite) TestLog(c *gc.C) { |
1440 | - log.Infof("testing-Test") |
1441 | + logger.Infof("testing-Test") |
1442 | c.Assert(c.GetTestLog(), gc.Matches, |
1443 | - ".*INFO juju testing-SetUpTest\n"+ |
1444 | - ".*INFO juju testing-Test\n", |
1445 | + ".*INFO juju.logsuite testing-SetUpTest\n"+ |
1446 | + ".*INFO juju.logsuite testing-Test\n", |
1447 | ) |
1448 | } |
1449 | |
1450 | === renamed directory 'log/syslog' => 'utils/syslog' |
1451 | === modified file 'utils/syslog/config_test.go' |
1452 | --- log/syslog/config_test.go 2014-02-28 16:19:14 +0000 |
1453 | +++ utils/syslog/config_test.go 2014-04-17 05:11:55 +0000 |
1454 | @@ -11,8 +11,8 @@ |
1455 | gc "launchpad.net/gocheck" |
1456 | |
1457 | "launchpad.net/juju-core/agent" |
1458 | - "launchpad.net/juju-core/log/syslog" |
1459 | - syslogtesting "launchpad.net/juju-core/log/syslog/testing" |
1460 | + "launchpad.net/juju-core/utils/syslog" |
1461 | + syslogtesting "launchpad.net/juju-core/utils/syslog/testing" |
1462 | ) |
1463 | |
1464 | func Test(t *stdtesting.T) { |
1465 | |
1466 | === modified file 'worker/authenticationworker/worker.go' |
1467 | --- worker/authenticationworker/worker.go 2014-03-05 19:41:34 +0000 |
1468 | +++ worker/authenticationworker/worker.go 2014-04-17 05:11:55 +0000 |
1469 | @@ -10,7 +10,7 @@ |
1470 | "launchpad.net/tomb" |
1471 | |
1472 | "launchpad.net/juju-core/agent" |
1473 | - "launchpad.net/juju-core/log" |
1474 | + "launchpad.net/juju-core/errors" |
1475 | "launchpad.net/juju-core/state/api/keyupdater" |
1476 | "launchpad.net/juju-core/state/api/watcher" |
1477 | "launchpad.net/juju-core/utils/set" |
1478 | @@ -50,14 +50,14 @@ |
1479 | // Record the keys Juju knows about. |
1480 | jujuKeys, err := kw.st.AuthorisedKeys(kw.tag) |
1481 | if err != nil { |
1482 | - return nil, log.LoggedErrorf(logger, "reading Juju ssh keys for %q: %v", kw.tag, err) |
1483 | + return nil, errors.LoggedErrorf(logger, "reading Juju ssh keys for %q: %v", kw.tag, err) |
1484 | } |
1485 | kw.jujuKeys = set.NewStrings(jujuKeys...) |
1486 | |
1487 | // Read the keys currently in ~/.ssh/authorised_keys. |
1488 | sshKeys, err := ssh.ListKeys(SSHUser, ssh.FullKeys) |
1489 | if err != nil { |
1490 | - return nil, log.LoggedErrorf(logger, "reading ssh authorized keys for %q: %v", kw.tag, err) |
1491 | + return nil, errors.LoggedErrorf(logger, "reading ssh authorized keys for %q: %v", kw.tag, err) |
1492 | } |
1493 | // Record any keys not added by Juju. |
1494 | for _, key := range sshKeys { |
1495 | @@ -69,12 +69,12 @@ |
1496 | } |
1497 | // Write out the ssh authorised keys file to match the current state of the world. |
1498 | if err := kw.writeSSHKeys(jujuKeys); err != nil { |
1499 | - return nil, log.LoggedErrorf(logger, "adding current Juju keys to ssh authorised keys: %v", err) |
1500 | + return nil, errors.LoggedErrorf(logger, "adding current Juju keys to ssh authorised keys: %v", err) |
1501 | } |
1502 | |
1503 | w, err := kw.st.WatchAuthorisedKeys(kw.tag) |
1504 | if err != nil { |
1505 | - return nil, log.LoggedErrorf(logger, "starting key updater worker: %v", err) |
1506 | + return nil, errors.LoggedErrorf(logger, "starting key updater worker: %v", err) |
1507 | } |
1508 | logger.Infof("%q key updater worker started", kw.tag) |
1509 | return w, nil |
1510 | @@ -97,7 +97,7 @@ |
1511 | // Read the keys that Juju has. |
1512 | newKeys, err := kw.st.AuthorisedKeys(kw.tag) |
1513 | if err != nil { |
1514 | - return log.LoggedErrorf(logger, "reading Juju ssh keys for %q: %v", kw.tag, err) |
1515 | + return errors.LoggedErrorf(logger, "reading Juju ssh keys for %q: %v", kw.tag, err) |
1516 | } |
1517 | // Figure out if any keys have been added or deleted. |
1518 | newJujuKeys := set.NewStrings(newKeys...) |
1519 | @@ -107,7 +107,7 @@ |
1520 | logger.Debugf("adding ssh keys to authorised keys: %v", added) |
1521 | logger.Debugf("deleting ssh keys from authorised keys: %v", deleted) |
1522 | if err = kw.writeSSHKeys(newKeys); err != nil { |
1523 | - return log.LoggedErrorf(logger, "updating ssh keys: %v", err) |
1524 | + return errors.LoggedErrorf(logger, "updating ssh keys: %v", err) |
1525 | } |
1526 | } |
1527 | kw.jujuKeys = newJujuKeys |
1528 | |
1529 | === modified file 'worker/charmrevisionworker/revisionupdater.go' |
1530 | --- worker/charmrevisionworker/revisionupdater.go 2014-01-17 13:35:48 +0000 |
1531 | +++ worker/charmrevisionworker/revisionupdater.go 2014-04-17 05:11:55 +0000 |
1532 | @@ -7,13 +7,15 @@ |
1533 | "fmt" |
1534 | "time" |
1535 | |
1536 | + "github.com/juju/loggo" |
1537 | "launchpad.net/tomb" |
1538 | |
1539 | - "launchpad.net/juju-core/log" |
1540 | "launchpad.net/juju-core/state/api/charmrevisionupdater" |
1541 | "launchpad.net/juju-core/worker" |
1542 | ) |
1543 | |
1544 | +var logger = loggo.GetLogger("juju.worker.charmrevisionworker") |
1545 | + |
1546 | // interval sets how often the resuming is called. |
1547 | var interval = 24 * time.Hour |
1548 | |
1549 | @@ -70,6 +72,6 @@ |
1550 | |
1551 | func (ruw *RevisionUpdateWorker) updateVersions() { |
1552 | if err := ruw.st.UpdateLatestRevisions(); err != nil { |
1553 | - log.Errorf("worker/charm revision lookup: cannot process charms: %v", err) |
1554 | + logger.Errorf("cannot process charms: %v", err) |
1555 | } |
1556 | } |
1557 | |
1558 | === modified file 'worker/cleaner/cleaner.go' |
1559 | --- worker/cleaner/cleaner.go 2013-08-28 14:03:08 +0000 |
1560 | +++ worker/cleaner/cleaner.go 2014-04-17 05:11:55 +0000 |
1561 | @@ -4,12 +4,15 @@ |
1562 | package cleaner |
1563 | |
1564 | import ( |
1565 | - "launchpad.net/juju-core/log" |
1566 | + "github.com/juju/loggo" |
1567 | + |
1568 | "launchpad.net/juju-core/state" |
1569 | "launchpad.net/juju-core/state/api/watcher" |
1570 | "launchpad.net/juju-core/worker" |
1571 | ) |
1572 | |
1573 | +var logger = loggo.GetLogger("juju.worker.cleaner") |
1574 | + |
1575 | // Cleaner is responsible for cleaning up the state. |
1576 | type Cleaner struct { |
1577 | st *state.State |
1578 | @@ -27,7 +30,7 @@ |
1579 | |
1580 | func (c *Cleaner) Handle() error { |
1581 | if err := c.st.Cleanup(); err != nil { |
1582 | - log.Errorf("worker/cleaner: cannot cleanup state: %v", err) |
1583 | + logger.Errorf("cannot cleanup state: %v", err) |
1584 | } |
1585 | // We do not return the err from Cleanup, because we don't want to stop |
1586 | // the loop as a failure |
1587 | |
1588 | === modified file 'worker/resumer/resumer.go' |
1589 | --- worker/resumer/resumer.go 2013-09-13 14:48:13 +0000 |
1590 | +++ worker/resumer/resumer.go 2014-04-17 05:11:55 +0000 |
1591 | @@ -7,11 +7,12 @@ |
1592 | "fmt" |
1593 | "time" |
1594 | |
1595 | + "github.com/juju/loggo" |
1596 | "launchpad.net/tomb" |
1597 | - |
1598 | - "launchpad.net/juju-core/log" |
1599 | ) |
1600 | |
1601 | +var logger = loggo.GetLogger("juju.worker.resumer") |
1602 | + |
1603 | // defaultInterval is the standard value for the interval setting. |
1604 | const defaultInterval = time.Minute |
1605 | |
1606 | @@ -65,7 +66,7 @@ |
1607 | return tomb.ErrDying |
1608 | case <-time.After(interval): |
1609 | if err := rr.tr.ResumeTransactions(); err != nil { |
1610 | - log.Errorf("worker/resumer: cannot resume transactions: %v", err) |
1611 | + logger.Errorf("cannot resume transactions: %v", err) |
1612 | } |
1613 | } |
1614 | } |
1615 | |
1616 | === modified file 'worker/rsyslog/rsyslog_test.go' |
1617 | --- worker/rsyslog/rsyslog_test.go 2014-04-11 17:51:58 +0000 |
1618 | +++ worker/rsyslog/rsyslog_test.go 2014-04-17 05:11:55 +0000 |
1619 | @@ -16,10 +16,10 @@ |
1620 | |
1621 | "launchpad.net/juju-core/cert" |
1622 | jujutesting "launchpad.net/juju-core/juju/testing" |
1623 | - "launchpad.net/juju-core/log/syslog" |
1624 | "launchpad.net/juju-core/state" |
1625 | "launchpad.net/juju-core/state/api" |
1626 | coretesting "launchpad.net/juju-core/testing" |
1627 | + "launchpad.net/juju-core/utils/syslog" |
1628 | "launchpad.net/juju-core/worker/rsyslog" |
1629 | ) |
1630 | |
1631 | |
1632 | === modified file 'worker/rsyslog/worker.go' |
1633 | --- worker/rsyslog/worker.go 2014-04-11 17:51:58 +0000 |
1634 | +++ worker/rsyslog/worker.go 2014-04-17 05:11:55 +0000 |
1635 | @@ -15,11 +15,11 @@ |
1636 | |
1637 | "launchpad.net/juju-core/agent" |
1638 | "launchpad.net/juju-core/cert" |
1639 | - "launchpad.net/juju-core/log/syslog" |
1640 | "launchpad.net/juju-core/names" |
1641 | apirsyslog "launchpad.net/juju-core/state/api/rsyslog" |
1642 | "launchpad.net/juju-core/state/api/watcher" |
1643 | "launchpad.net/juju-core/utils" |
1644 | + "launchpad.net/juju-core/utils/syslog" |
1645 | "launchpad.net/juju-core/worker" |
1646 | ) |
1647 | |
1648 | |
1649 | === modified file 'worker/runner.go' |
1650 | --- worker/runner.go 2013-11-13 05:26:13 +0000 |
1651 | +++ worker/runner.go 2014-04-17 05:11:55 +0000 |
1652 | @@ -8,8 +8,6 @@ |
1653 | "time" |
1654 | |
1655 | "launchpad.net/tomb" |
1656 | - |
1657 | - "launchpad.net/juju-core/log" |
1658 | ) |
1659 | |
1660 | // RestartDelay holds the length of time that a worker |
1661 | @@ -125,7 +123,7 @@ |
1662 | } |
1663 | |
1664 | func (runner *runner) Kill() { |
1665 | - log.Debugf("worker: killing runner %p", runner) |
1666 | + logger.Debugf("killing runner %p", runner) |
1667 | runner.tomb.Kill(nil) |
1668 | } |
1669 | |
1670 | @@ -161,13 +159,13 @@ |
1671 | } |
1672 | select { |
1673 | case <-tombDying: |
1674 | - log.Infof("worker: runner is dying") |
1675 | + logger.Infof("runner is dying") |
1676 | isDying = true |
1677 | killAll(workers) |
1678 | tombDying = nil |
1679 | case req := <-runner.startc: |
1680 | if isDying { |
1681 | - log.Infof("worker: ignoring start request for %q when dying", req.id) |
1682 | + logger.Infof("ignoring start request for %q when dying", req.id) |
1683 | break |
1684 | } |
1685 | info := workers[req.id] |
1686 | @@ -206,7 +204,7 @@ |
1687 | } |
1688 | if info.err != nil { |
1689 | if runner.isFatal(info.err) { |
1690 | - log.Errorf("worker: fatal %q: %v", info.id, info.err) |
1691 | + logger.Errorf("fatal %q: %v", info.id, info.err) |
1692 | if finalError == nil || runner.moreImportant(info.err, finalError) { |
1693 | finalError = info.err |
1694 | } |
1695 | @@ -217,7 +215,7 @@ |
1696 | } |
1697 | break |
1698 | } else { |
1699 | - log.Errorf("worker: exited %q: %v", info.id, info.err) |
1700 | + logger.Errorf("exited %q: %v", info.id, info.err) |
1701 | } |
1702 | } |
1703 | if workerInfo.start == nil { |
1704 | @@ -240,7 +238,7 @@ |
1705 | |
1706 | func killWorker(id string, info *workerInfo) { |
1707 | if info.worker != nil { |
1708 | - log.Debugf("worker: killing %q", id) |
1709 | + logger.Debugf("killing %q", id) |
1710 | info.worker.Kill() |
1711 | info.worker = nil |
1712 | } |
1713 | @@ -251,7 +249,7 @@ |
1714 | // runWorker starts the given worker after waiting for the given delay. |
1715 | func (runner *runner) runWorker(delay time.Duration, id string, start func() (Worker, error)) { |
1716 | if delay > 0 { |
1717 | - log.Infof("worker: restarting %q in %v", id, delay) |
1718 | + logger.Infof("restarting %q in %v", id, delay) |
1719 | select { |
1720 | case <-runner.tomb.Dying(): |
1721 | runner.donec <- doneInfo{id, nil} |
1722 | @@ -259,7 +257,7 @@ |
1723 | case <-time.After(delay): |
1724 | } |
1725 | } |
1726 | - log.Infof("worker: start %q", id) |
1727 | + logger.Infof("start %q", id) |
1728 | worker, err := start() |
1729 | if err == nil { |
1730 | runner.startedc <- startInfo{id, worker} |
Reviewers: mp+216247_ code.launchpad. net,
Message:
Please take a look.
Description:
Remove legacy log functions.
This branch removes the old log.Errorf, log.Noticef,
log.Infof, log.Debugf, and log.Warningf in favour of
loggo functions.
The rsyslog package is moved to be under utils, and
the LoggedErrorf is moved to the errors package.
A lot of very mechanical changes.
https:/ /code.launchpad .net/~thumper/ juju-core/ remove- old-log- functions/ +merge/ 216247
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/88800043/
Affected files (+184, -316 lines): kvm/container. go kvm/kvm. go downloader. go testing/ tools.go common/ state.go watcher/ watcher. go /charmrevisionu pdater/ updater. go /common/ password. go /common/ resource. go presence. go watcher. go testbase/ log_test. go config_ test.go authenticationw orker/worker. go charmrevisionwo rker/revisionup dater.go cleaner/ cleaner. go resumer/ resumer. go rsyslog/ rsyslog_ test.go rsyslog/ worker. go
A [revision details]
M charm/charm.go
M charm/dir.go
M charm/dir_test.go
M charm/repo.go
M charm/repo_test.go
M cmd/juju/plugin.go
M cmd/juju/publish.go
M cmd/jujud/agent.go
M container/
M container/
M downloader/
M environs/
M errors/errors.go
M juju/api.go
M juju/conn.go
D log/log.go
D log/log_test.go
M provider/
M rpc/rpc_test.go
M state/api/
M state/apiserver
M state/apiserver
M state/apiserver
M state/presence/
M state/watcher/
M store/lpad.go
M store/server.go
M store/store.go
M testing/mgo.go
M testing/
M utils/syslog/
M worker/
M worker/
M worker/
M worker/
M worker/
M worker/
M worker/runner.go