// Init initializes the command for running. func (a *UnitAgent) Init(args []string) error { if a.UnitName == "" { return cmdutil.RequiredError("unit-name") } if !names.IsValidUnit(a.UnitName) { return fmt.Errorf(`--unit-name option expects "<service>/<n>" argument`) } if err := a.AgentConf.CheckArgs(args); err != nil { return err } a.runner = worker.NewRunner(cmdutil.IsFatal, cmdutil.MoreImportant, worker.RestartDelay) if !a.logToStdErr { if err := a.ReadConfig(a.Tag().String()); err != nil { return err } agentConfig := a.CurrentConfig() // the writer in ctx.stderr gets set as the loggo writer in github.com/juju/cmd/logging.go a.ctx.Stderr = &lumberjack.Logger{ Filename: agent.LogFilename(agentConfig), MaxSize: 300, // megabytes MaxBackups: 2, } } return nil }
// Init is called by the cmd system to initialize the structure for // running. func (a *machineAgentCmd) Init(args []string) error { if !names.IsValidMachine(a.machineId) { return fmt.Errorf("--machine-id option must be set, and expects a non-negative integer") } if err := a.agentInitializer.CheckArgs(args); err != nil { return err } // Due to changes in the logging, and needing to care about old // models that have been upgraded, we need to explicitly remove the // file writer if one has been added, otherwise we will get duplicate // lines of all logging in the log file. loggo.RemoveWriter("logfile") if a.logToStdErr { return nil } err := a.currentConfig.ReadConfig(names.NewMachineTag(a.machineId).String()) if err != nil { return errors.Annotate(err, "cannot read agent configuration") } // the context's stderr is set as the loggo writer in github.com/juju/cmd/logging.go a.ctx.Stderr = &lumberjack.Logger{ Filename: agent.LogFilename(a.currentConfig.CurrentConfig()), MaxSize: 300, // megabytes MaxBackups: 2, } return nil }