glog/main.go

78 lines
1.4 KiB
Go

package glog
import (
"log"
"os"
)
const (
ZERO = 0
INFO = 1 << iota
DEBUG
WARNING
)
var mask = INFO | WARNING
var log_file *os.File
var file_logger *log.Logger
func SetMask(m int) {
mask = m
}
func SetLogFile(path string) error {
var err error
log_file, err = os.OpenFile(path, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
if err != nil {
return err
}
file_logger = log.New(log_file, "", log.LstdFlags|log.Lshortfile)
return nil
}
func CloseFile() {
file_logger = nil
err := log_file.Close()
if err != nil {
log.Println("failed to close log file")
}
log_file = nil
}
func Info(format string, values ...interface{}) {
if (mask & INFO) != 0 {
log.Printf("[INFO] "+format, values...)
if file_logger != nil {
file_logger.Printf("[INFO] "+format, values...)
}
}
}
func Debug(format string, values ...interface{}) {
if (mask & DEBUG) != 0 {
log.Printf("[DEBUG] "+format, values...)
if file_logger != nil {
file_logger.Printf("[DEBUG] "+format, values...)
}
}
}
func Warning(format string, values ...interface{}) {
if (mask & WARNING) != 0 {
log.Printf("[WARNING] "+format, values...)
if file_logger != nil {
file_logger.Printf("[WARNING] "+format, values...)
}
}
}
func Fatal(format string, values ...interface{}) {
if file_logger != nil {
log.Printf("[FATAL] "+format, values...)
file_logger.Fatalf("[FATAL] "+format, values...)
} else {
log.Fatalf("[FATAL] "+format, values...)
}
}