Fix markup
[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 // Enable logging to the log file
24 func (logger *MyLogger) EnableLogging(enable_logging bool) bool {
25         if logger.logging_enabled == enable_logging {
26                 return enable_logging // as nothing to do
27         }
28
29         old_value := logger.logging_enabled
30         logger.logging_enabled = enable_logging
31
32         if enable_logging {
33                 logfile := MyName() + ".log"
34
35                 file, err := os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
36                 if err != nil {
37                         log.Fatal("Failed to open log file", logfile, ":", err)
38                 }
39                 logger.logger = log.New(file, "", log.Ldate|log.Ltime)
40         }
41         return old_value
42 }
43
44 // pass Println() calls downstream if we have a valid logger setup
45 func (logger *MyLogger) Println(v ...interface{}) {
46         if logger.logger != nil {
47                 logger.logger.Println(v)
48         }
49 }