diff --git a/example/logging/main.go b/example/logging/main.go index a9838a7..ea8190b 100644 --- a/example/logging/main.go +++ b/example/logging/main.go @@ -1,105 +1,105 @@ -// Copyright 2015 Daniel Theophanes. -// Use of this source code is governed by a zlib-style -// license that can be found in the LICENSE file.package service - -// Simple service that only works by printing a log message every few seconds. -package main - -import ( - "flag" - "log" - "time" - - "github.com/kardianos/service" -) - -var logger service.Logger - -// Program structures. -// Define Start and Stop methods. -type program struct { - exit chan struct{} -} - -func (p *program) Start(s service.Service) error { - if service.Interactive() { - logger.Info("Running in terminal.") - } else { - logger.Info("Running under service manager.") - } - p.exit = make(chan struct{}) - - // Start should not block. Do the actual work async. - go p.run() - return nil -} -func (p *program) run() error { - logger.Infof("I'm running %v.", service.Platform()) - ticker := time.NewTicker(2 * time.Second) - for { - select { - case tm := <-ticker.C: - logger.Infof("Still running at %v...", tm) - case <-p.exit: - ticker.Stop() - return nil - } - } - return nil -} -func (p *program) Stop(s service.Service) error { - // Any work in Stop should be quick, usually a few seconds at most. - logger.Info("I'm Stopping!") - close(p.exit) - return nil -} - -// Service setup. -// Define service config. -// Create the service. -// Setup the logger. -// Handle service controls (optional). -// Run the service. -func main() { - svcFlag := flag.String("service", "", "Control the system service.") - flag.Parse() - - svcConfig := &service.Config{ - Name: "GoServiceExampleLogging", - DisplayName: "Go Service Example for Logging", - Description: "This is an example Go service that outputs log messages.", - } - - prg := &program{} - s, err := service.New(prg, svcConfig) - if err != nil { - log.Fatal(err) - } - errs := make(chan error, 5) - logger, err = s.Logger(errs) - if err != nil { - log.Fatal(err) - } - - go func() { - for { - err := <-errs - if err != nil { - log.Print(err) - } - } - }() - - if len(*svcFlag) != 0 { - err := service.Control(s, *svcFlag) - if err != nil { - log.Printf("Valid actions: %q\n", service.ControlAction) - log.Fatal(err) - } - return - } - err = s.Run() - if err != nil { - logger.Error(err) - } -} +// Copyright 2015 Daniel Theophanes. +// Use of this source code is governed by a zlib-style +// license that can be found in the LICENSE file.package service + +// Simple service that only works by printing a log message every few seconds. +package main + +import ( + "flag" + "log" + "time" + + "github.com/kardianos/service" +) + +var logger service.Logger + +// Program structures. +// Define Start and Stop methods. +type program struct { + exit chan struct{} +} + +func (p *program) Start(s service.Service) error { + if service.Interactive() { + logger.Info("Running in terminal.") + } else { + logger.Info("Running under service manager.") + } + p.exit = make(chan struct{}) + + // Start should not block. Do the actual work async. + go p.run() + return nil +} +func (p *program) run() error { + logger.Infof("I'm running %v.", service.Platform()) + ticker := time.NewTicker(2 * time.Second) + for { + select { + case tm := <-ticker.C: + logger.Infof("Still running at %v...", tm) + case <-p.exit: + ticker.Stop() + return nil + } + } + return nil +} +func (p *program) Stop(s service.Service) error { + // Any work in Stop should be quick, usually a few seconds at most. + logger.Info("I'm Stopping!") + close(p.exit) + return nil +} + +// Service setup. +// Define service config. +// Create the service. +// Setup the logger. +// Handle service controls (optional). +// Run the service. +func main() { + svcFlag := flag.String("service", "", "Control the system service.") + flag.Parse() + + svcConfig := &service.Config{ + Name: "GoServiceExampleLogging", + DisplayName: "Go Service Example for Logging", + Description: "This is an example Go service that outputs log messages.", + } + + prg := &program{} + s, err := service.New(prg, svcConfig) + if err != nil { + log.Fatal(err) + } + errs := make(chan error, 5) + logger, err = s.Logger(errs) + if err != nil { + log.Fatal(err) + } + + go func() { + for { + err := <-errs + if err != nil { + log.Print(err) + } + } + }() + + if len(*svcFlag) != 0 { + err := service.Control(s, *svcFlag) + if err != nil { + log.Printf("Valid actions: %q\n", service.ControlAction) + log.Fatal(err) + } + return + } + err = s.Run() + if err != nil { + logger.Error(err) + } +} diff --git a/example/simple/main.go b/example/simple/main.go index 76d88f1..b8909bf 100644 --- a/example/simple/main.go +++ b/example/simple/main.go @@ -1,51 +1,51 @@ -// Copyright 2015 Daniel Theophanes. -// Use of this source code is governed by a zlib-style -// license that can be found in the LICENSE file.package service - -// simple does nothing except block while running the service. -package main - -import ( - "log" - - "github.com/kardianos/service" -) - -var logger service.Logger - -type program struct{} - -func (p *program) Start(s service.Service) error { - // Start should not block. Do the actual work async. - go p.run() - return nil -} -func (p *program) run() { - // Do work here -} -func (p *program) Stop(s service.Service) error { - // Stop should not block. Return with a few seconds. - return nil -} - -func main() { - svcConfig := &service.Config{ - Name: "GoServiceExampleSimple", - DisplayName: "Go Service Example", - Description: "This is an example Go service.", - } - - prg := &program{} - s, err := service.New(prg, svcConfig) - if err != nil { - log.Fatal(err) - } - logger, err = s.Logger(nil) - if err != nil { - log.Fatal(err) - } - err = s.Run() - if err != nil { - logger.Error(err) - } -} +// Copyright 2015 Daniel Theophanes. +// Use of this source code is governed by a zlib-style +// license that can be found in the LICENSE file.package service + +// simple does nothing except block while running the service. +package main + +import ( + "log" + + "github.com/kardianos/service" +) + +var logger service.Logger + +type program struct{} + +func (p *program) Start(s service.Service) error { + // Start should not block. Do the actual work async. + go p.run() + return nil +} +func (p *program) run() { + // Do work here +} +func (p *program) Stop(s service.Service) error { + // Stop should not block. Return with a few seconds. + return nil +} + +func main() { + svcConfig := &service.Config{ + Name: "GoServiceExampleSimple", + DisplayName: "Go Service Example", + Description: "This is an example Go service.", + } + + prg := &program{} + s, err := service.New(prg, svcConfig) + if err != nil { + log.Fatal(err) + } + logger, err = s.Logger(nil) + if err != nil { + log.Fatal(err) + } + err = s.Run() + if err != nil { + logger.Error(err) + } +}