func main()

in cmd/main.go [31:90]


func main() {
	flags, output, proceed := sqlservermetrics.Init()
	if output != "" {
		fmt.Println(output)
	}
	if !proceed {
		return
	}

	ctx := context.Background()
	// Load default logging configuration.
	sqlservermetrics.LoggingSetupDefault(ctx, sqlservermetrics.LogPrefix())
	// Load configuration.
	cfg, err := sqlservermetrics.LoadConfiguration(sqlservermetrics.ConfigPath())
	if cfg == nil {
		log.Logger.Fatalw("Failed to load configuration", "error", err)
	}
	if err != nil {
		log.Logger.Errorw("Failed to load configuration. Using default configurations", "error", err)
	}
	// Load logging configuration based on the configuration file.
	sqlservermetrics.LoggingSetup(ctx, sqlservermetrics.LogPrefix(), cfg)

	// onetime collection
	if flags.Onetime {
		if err := sqlservermetrics.OSCollection(ctx, sqlservermetrics.AgentFilePath(), sqlservermetrics.LogPrefix(), cfg, true); err != nil {
			log.Logger.Errorw("Failed to complete os collection", "error", err)
		}
		if err := sqlservermetrics.SQLCollection(ctx, sqlservermetrics.AgentFilePath(), sqlservermetrics.LogPrefix(), cfg, true); err != nil {
			log.Logger.Errorw("Failed to complete sql collection", "error", err)
		}
		return
	}
	// Init UsageMetricsLogger by reading "disable_log_usage" from the configuration file.
	sqlservermetrics.UsageMetricsLogger = sqlservermetrics.UsageMetricsLoggerInit(sqlservermetrics.ServiceName, sqlservermetrics.AgentVersion, sqlservermetrics.AgentUsageLogPrefix, !cfg.GetDisableLogUsage())
	osCollectionFunc := func(cfg *configpb.Configuration, onetime bool) error {
		return sqlservermetrics.OSCollection(ctx, sqlservermetrics.AgentFilePath(), sqlservermetrics.LogPrefix(), cfg, onetime)
	}
	sqlCollectionFunc := func(cfg *configpb.Configuration, onetime bool) error {
		return sqlservermetrics.SQLCollection(ctx, sqlservermetrics.AgentFilePath(), sqlservermetrics.LogPrefix(), cfg, onetime)
	}

	s, err := daemon.CreateService(
		func() {
			sqlservermetrics.CollectionService(sqlservermetrics.ConfigPath(), osCollectionFunc, sqlservermetrics.OS)
		},
		func() {
			sqlservermetrics.CollectionService(sqlservermetrics.ConfigPath(), sqlCollectionFunc, sqlservermetrics.SQL)
		},
		daemon.CreateConfig(sqlservermetrics.ServiceName, sqlservermetrics.ServiceDisplayName, sqlservermetrics.Description),
		sqlservermetrics.UsageMetricsLogger)

	if err != nil {
		log.Logger.Fatalw("Failed to create the service", "error", err)
	}

	if err = daemon.Control(s, flags.Action, sqlservermetrics.UsageMetricsLogger); err != nil {
		log.Logger.Fatal(err)
	}
}