Remove time.Ticker and adjust polling mechanism
[pstop.git] / lib / log.go
1 // logger - minimal logger shared by everyone
2 package lib
3
4 import (
5         "log"
6         "os"
7 )
8
9 // public visible interface
10 var Logger *MyLogger
11
12 func init() {
13         Logger = new(MyLogger)
14         Logger.EnableLogging(false)
15 }
16
17 // just add an extra field to enable or not
18 type MyLogger struct {
19         logging_enabled bool
20         logger          *log.Logger
21 }
22
23 func (logger *MyLogger) EnableLogging(enable_logging bool) bool {
24         if logger.logging_enabled == enable_logging {
25                 return enable_logging // as nothing to do
26         }
27
28         old_value := logger.logging_enabled
29         logger.logging_enabled = enable_logging
30
31         if enable_logging {
32                 logfile := MyName() + ".log"
33
34                 file, err := os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
35                 if err != nil {
36                         log.Fatal("Failed to open log file", logfile, ":", err)
37                 }
38                 logger.logger = log.New(file, "", log.Ldate|log.Ltime)
39         }
40         return old_value
41 }
42
43 // pass Println() calls downstream if we have a valid logger setup
44 func (logger *MyLogger) Println(v ...interface{}) {
45         if logger.logger != nil {
46                 logger.logger.Println(v)
47         }
48 }