~ubuntu-branches/ubuntu/trusty/juju-core/trusty-proposed

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/cmd/logging.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-01-29 11:40:20 UTC
  • mfrom: (23.1.1 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20140129114020-ejieitm8smtt5vln
Tags: 1.17.1-0ubuntu2
d/tests/local-provider: Don't fail tests if ~/.juju is present as its
created by the juju version command. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
        "launchpad.net/juju-core/juju/osenv"
16
16
)
17
17
 
 
18
// WriterFactory defines the single method to create a new
 
19
// logging writer for a specified output target.
 
20
type WriterFactory interface {
 
21
        NewWriter(target io.Writer) loggo.Writer
 
22
}
 
23
 
18
24
// Log supplies the necessary functionality for Commands that wish to set up
19
25
// logging.
20
26
type Log struct {
23
29
        Debug   bool
24
30
        ShowLog bool
25
31
        Config  string
 
32
        Factory WriterFactory
 
33
}
 
34
 
 
35
// GetLogWriter returns a logging writer for the specified target.
 
36
func (l *Log) GetLogWriter(target io.Writer) loggo.Writer {
 
37
        if l.Factory != nil {
 
38
                return l.Factory.NewWriter(target)
 
39
        }
 
40
        return loggo.NewSimpleWriter(target, &loggo.DefaultFormatter{})
26
41
}
27
42
 
28
43
// AddFlags adds appropriate flags to f.
32
47
        f.BoolVar(&l.Verbose, "v", false, "if set, log additional messages")
33
48
        f.BoolVar(&l.Verbose, "verbose", false, "if set, log additional messages")
34
49
        f.BoolVar(&l.Debug, "debug", false, "if set, log debugging messages")
35
 
        defaultLogConfig := os.Getenv(osenv.JujuLoggingConfig)
36
 
        f.StringVar(&l.Config, "log-config", defaultLogConfig, "specify log levels for modules")
 
50
        defaultLogConfig := os.Getenv(osenv.JujuLoggingConfigEnvKey)
 
51
        f.StringVar(&l.Config, "logging-config", defaultLogConfig, "specify log levels for modules")
37
52
        f.BoolVar(&l.ShowLog, "show-log", false, "if set, write the log file to stderr")
38
53
}
39
54
 
45
60
                if err != nil {
46
61
                        return err
47
62
                }
48
 
                writer := loggo.NewSimpleWriter(target, &loggo.DefaultFormatter{})
 
63
                writer := l.GetLogWriter(target)
49
64
                err = loggo.RegisterWriter("logfile", writer, loggo.TRACE)
50
65
                if err != nil {
51
66
                        return err
66
81
 
67
82
        if l.ShowLog {
68
83
                // We replace the default writer to use ctx.Stderr rather than os.Stderr.
69
 
                writer := loggo.NewSimpleWriter(ctx.Stderr, &loggo.DefaultFormatter{})
 
84
                writer := l.GetLogWriter(ctx.Stderr)
70
85
                _, err := loggo.ReplaceDefaultWriter(writer)
71
86
                if err != nil {
72
87
                        return err