1
// Copyright 2012, 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
10
"launchpad.net/gnuflag"
14
// Log supplies the necessary functionality for Commands that wish to set up
23
// AddFlags adds appropriate flags to f.
24
func (l *Log) AddFlags(f *gnuflag.FlagSet) {
25
f.StringVar(&l.Path, "log-file", "", "path to write log to")
26
// TODO(thumper): rename verbose to --show-log
27
f.BoolVar(&l.Verbose, "v", false, "if set, log additional messages")
28
f.BoolVar(&l.Verbose, "verbose", false, "if set, log additional messages")
29
f.BoolVar(&l.Debug, "debug", false, "if set, log debugging messages")
30
f.StringVar(&l.Config, "log-config", "", "specify log levels for modules")
33
// Start starts logging using the given Context.
34
func (l *Log) Start(ctx *Context) (err error) {
37
path := ctx.AbsPath(l.Path)
38
target, err = os.OpenFile(path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
42
} else if l.Verbose || l.Debug {
47
writer := loggo.NewSimpleWriter(target, &loggo.DefaultFormatter{})
48
_, err = loggo.ReplaceDefaultWriter(writer)
53
loggo.RemoveWriter("default")
55
if l.Verbose || l.Debug {
60
// Set the level on the root logger.
61
loggo.GetLogger("").SetLogLevel(level)
63
loggo.ConfigureLoggers(l.Config)