// initLog initializes an event logger. It registers the source name with // the registry if it does not already exist. func initLog(provider, source, msgFile string) (*elog.Log, error) { // Install entry to registry: _, err := elog.Install(providerName, sourceName, msgFile, true, allLevels) if err != nil { return nil, err } // Open a new logger for writing events: log, err := elog.Open(sourceName) if err != nil { var errs multierror.Errors errs = append(errs, err) err := elog.RemoveSource(providerName, sourceName) if err != nil { errs = append(errs, err) } err = elog.RemoveProvider(providerName) if err != nil { errs = append(errs, err) } return nil, errs.Err() } return log, nil }
// uninstallLog unregisters the event logger from the registry and closes the // log's handle if it is open. func uninstallLog(provider, source string, log *elog.Log) error { var errs multierror.Errors if log != nil { err := clearEventLog(Handle(log.Handle), "") if err != nil { errs = append(errs, err) } err = log.Close() if err != nil { errs = append(errs, err) } } err := elog.RemoveSource(providerName, sourceName) if err != nil { errs = append(errs, err) } err = elog.RemoveProvider(providerName) if err != nil { errs = append(errs, err) } return errs.Err() }