Merge lp:~thumper/juju-core/remove-old-log-functions into lp:~go-bot/juju-core/trunk

Proposed by Tim Penhey
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
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.

https://codereview.appspot.com/88800043/

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.

https://codereview.appspot.com/88800043/

To post a comment you must log in.
Revision history for this message
Tim Penhey (thumper) wrote :

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):
   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/kvm/container.go
   M container/kvm/kvm.go
   M downloader/downloader.go
   M environs/testing/tools.go
   M errors/errors.go
   M juju/api.go
   M juju/conn.go
   D log/log.go
   D log/log_test.go
   M provider/common/state.go
   M rpc/rpc_test.go
   M state/api/watcher/watcher.go
   M state/apiserver/charmrevisionupdater/updater.go
   M state/apiserver/common/password.go
   M state/apiserver/common/resource.go
   M state/presence/presence.go
   M state/watcher/watcher.go
   M store/lpad.go
   M store/server.go
   M store/store.go
   M testing/mgo.go
   M testing/testbase/log_test.go
   M utils/syslog/config_test.go
   M worker/authenticationworker/worker.go
   M worker/charmrevisionworker/revisionupdater.go
   M worker/cleaner/cleaner.go
   M worker/resumer/resumer.go
   M worker/rsyslog/rsyslog_test.go
   M worker/rsyslog/worker.go
   M worker/runner.go

Revision history for this message
Dave Cheney (dave-cheney) wrote :

On 2014/04/17 04:04:29, thumper wrote:
> Please take a look.

LGTM

https://codereview.appspot.com/88800043/

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (10.5 KiB)

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.net/juju-core 0.017s
ok launchpad.net/juju-core/agent 1.734s
ok launchpad.net/juju-core/agent/mongo 1.329s
ok launchpad.net/juju-core/agent/tools 0.220s
ok launchpad.net/juju-core/bzr 5.168s
ok launchpad.net/juju-core/cert 2.831s
ok launchpad.net/juju-core/charm 0.418s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.026s
ok launchpad.net/juju-core/cloudinit/sshinit 0.755s
ok launchpad.net/juju-core/cmd 0.160s
ok launchpad.net/juju-core/cmd/charm-admin 0.713s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/envcmd 0.155s
ok launchpad.net/juju-core/cmd/juju 224.750s
ok launchpad.net/juju-core/cmd/jujud 77.307s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 6.379s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/cmd/plugins/local 0.164s
? launchpad.net/juju-core/cmd/plugins/local/juju-local [no test files]
ok launchpad.net/juju-core/constraints 0.020s
ok launchpad.net/juju-core/container 0.050s
ok launchpad.net/juju-core/container/factory 0.041s
ok launchpad.net/juju-core/container/kvm 0.160s
ok launchpad.net/juju-core/container/kvm/mock 0.044s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 4.293s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.205s
ok launchpad.net/juju-core/environs 2.240s
ok launchpad.net/juju-core/environs/bootstrap 11.765s
ok launchpad.net/juju-core/environs/cloudinit 0.463s
ok launchpad.net/juju-core/environs/config 3.585s
ok launchpad.net/juju-core/environs/configstore 0.028s
ok launchpad.net/juju-core/environs/filestorage 0.027s
ok launchpad.net/juju-core/environs/httpstorage 0.615s
ok launchpad.net/juju-core/environs/imagemetadata 0.438s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.040s
ok launchpad.net/juju-core/environs/jujutest 0.157s
ok launchpad.net/juju-core/environs/manual 10.406s
ok launchpad.net/juju-core/environs/simplestreams 0.209s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 0.846s
ok launchpad.net/juju-core/environs/storage 0.807s
ok launchpad.net/juju-core/environs/sync 50.061s
ok launchpad.net/juju-core/environs/testing 0.133s
ok launchpad.net/juju-core/environs/tools 4.699s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.011s
ok launchpad.net/juju-core/instance 0.018s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 43....

Revision history for this message
John A Meinel (jameinel) wrote :

LGTM though the functions that used the "debugf" wrapper should probably
actually be dropped to Tracef level.

https://codereview.appspot.com/88800043/diff/1/state/presence/presence.go
File state/presence/presence.go (right):

https://codereview.appspot.com/88800043/diff/1/state/presence/presence.go#newcode22
state/presence/presence.go:22: var logger =
loggo.GetLogger("juju.state.presence")
These were all disabled by default, should we actually reduce them down
to Tracef?

https://codereview.appspot.com/88800043/diff/1/state/watcher/watcher.go
File state/watcher/watcher.go (left):

https://codereview.appspot.com/88800043/diff/1/state/watcher/watcher.go#oldcode279
state/watcher/watcher.go:279: debugf("state/watcher: got request: %#v",
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.watcher" disabled by default, but I think just
turning all of these into Tracef makes the most sense.

https://codereview.appspot.com/88800043/

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (10.5 KiB)

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.net/juju-core 0.014s
ok launchpad.net/juju-core/agent 1.655s
ok launchpad.net/juju-core/agent/mongo 1.277s
ok launchpad.net/juju-core/agent/tools 0.203s
ok launchpad.net/juju-core/bzr 5.076s
ok launchpad.net/juju-core/cert 2.723s
ok launchpad.net/juju-core/charm 0.397s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.030s
ok launchpad.net/juju-core/cloudinit/sshinit 0.899s
ok launchpad.net/juju-core/cmd 0.138s
ok launchpad.net/juju-core/cmd/charm-admin 0.741s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/envcmd 0.181s
ok launchpad.net/juju-core/cmd/juju 231.490s
ok launchpad.net/juju-core/cmd/jujud 77.983s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 7.315s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/cmd/plugins/local 0.202s
? launchpad.net/juju-core/cmd/plugins/local/juju-local [no test files]
ok launchpad.net/juju-core/constraints 0.020s
ok launchpad.net/juju-core/container 0.040s
ok launchpad.net/juju-core/container/factory 0.041s
ok launchpad.net/juju-core/container/kvm 0.173s
ok launchpad.net/juju-core/container/kvm/mock 0.055s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 4.289s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.253s
ok launchpad.net/juju-core/environs 2.506s
ok launchpad.net/juju-core/environs/bootstrap 11.541s
ok launchpad.net/juju-core/environs/cloudinit 0.446s
ok launchpad.net/juju-core/environs/config 1.868s
ok launchpad.net/juju-core/environs/configstore 0.028s
ok launchpad.net/juju-core/environs/filestorage 0.027s
ok launchpad.net/juju-core/environs/httpstorage 0.716s
ok launchpad.net/juju-core/environs/imagemetadata 0.461s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.041s
ok launchpad.net/juju-core/environs/jujutest 0.169s
ok launchpad.net/juju-core/environs/manual 12.719s
ok launchpad.net/juju-core/environs/simplestreams 0.286s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 0.791s
ok launchpad.net/juju-core/environs/storage 0.852s
ok launchpad.net/juju-core/environs/sync 49.445s
ok launchpad.net/juju-core/environs/testing 0.165s
ok launchpad.net/juju-core/environs/tools 5.018s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.013s
ok launchpad.net/juju-core/instance 0.021s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 44....

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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}

Subscribers

People subscribed via source and target branches

to status/vote changes: