archive
This commit is contained in:
200
MovieNight/common/logging.go
Executable file
200
MovieNight/common/logging.go
Executable file
@@ -0,0 +1,200 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
var loglevel LogLevel
|
||||
|
||||
type LogLevel string
|
||||
|
||||
const (
|
||||
LLError LogLevel = "error" // only log errors
|
||||
LLChat LogLevel = "chat" // log chat and commands
|
||||
LLInfo LogLevel = "info" // log info messages (not quite debug, but not chat)
|
||||
LLDebug LogLevel = "debug" // log everything
|
||||
)
|
||||
|
||||
const (
|
||||
logPrefixError string = "[ERROR] "
|
||||
logPrefixChat string = "[CHAT] "
|
||||
logPrefixInfo string = "[INFO] "
|
||||
logPrefixDebug string = "[DEBUG] "
|
||||
)
|
||||
|
||||
var (
|
||||
logError *log.Logger
|
||||
logChat *log.Logger
|
||||
logInfo *log.Logger
|
||||
logDebug *log.Logger
|
||||
)
|
||||
|
||||
func SetupLogging(level LogLevel, file string) error {
|
||||
switch level {
|
||||
case LLDebug:
|
||||
if file == "" {
|
||||
logError = log.New(os.Stderr, logPrefixError, log.LstdFlags)
|
||||
logChat = log.New(os.Stdout, logPrefixChat, log.LstdFlags)
|
||||
logDebug = log.New(os.Stdout, logPrefixDebug, log.LstdFlags)
|
||||
logInfo = log.New(os.Stdout, logPrefixInfo, log.LstdFlags)
|
||||
} else {
|
||||
f, err := os.OpenFile(file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Unable to open log file for writing: %s", err)
|
||||
}
|
||||
logError = log.New(io.MultiWriter(os.Stderr, f), logPrefixError, log.LstdFlags)
|
||||
logChat = log.New(io.MultiWriter(os.Stdout, f), logPrefixChat, log.LstdFlags)
|
||||
logInfo = log.New(io.MultiWriter(os.Stdout, f), logPrefixInfo, log.LstdFlags)
|
||||
logDebug = log.New(io.MultiWriter(os.Stdout, f), logPrefixDebug, log.LstdFlags)
|
||||
}
|
||||
case LLChat:
|
||||
logDebug = nil
|
||||
if file == "" {
|
||||
logError = log.New(os.Stderr, logPrefixError, log.LstdFlags)
|
||||
logChat = log.New(os.Stdout, logPrefixChat, log.LstdFlags)
|
||||
logInfo = log.New(os.Stdout, logPrefixInfo, log.LstdFlags)
|
||||
} else {
|
||||
f, err := os.OpenFile(file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Unable to open log file for writing: %s", err)
|
||||
}
|
||||
logError = log.New(io.MultiWriter(os.Stderr, f), logPrefixError, log.LstdFlags)
|
||||
logChat = log.New(io.MultiWriter(os.Stdout, f), logPrefixChat, log.LstdFlags)
|
||||
logInfo = log.New(io.MultiWriter(os.Stdout, f), logPrefixInfo, log.LstdFlags)
|
||||
}
|
||||
|
||||
case LLInfo:
|
||||
logDebug = nil
|
||||
logChat = nil
|
||||
if file == "" {
|
||||
logError = log.New(os.Stderr, logPrefixError, log.LstdFlags)
|
||||
logInfo = log.New(os.Stdout, logPrefixInfo, log.LstdFlags)
|
||||
} else {
|
||||
f, err := os.OpenFile(file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Unable to open log file for writing: %s", err)
|
||||
}
|
||||
logError = log.New(io.MultiWriter(os.Stderr, f), logPrefixError, log.LstdFlags)
|
||||
logInfo = log.New(io.MultiWriter(os.Stdout, f), logPrefixInfo, log.LstdFlags)
|
||||
}
|
||||
|
||||
// Default to error
|
||||
default:
|
||||
logChat = nil
|
||||
logDebug = nil
|
||||
logInfo = nil
|
||||
if file == "" {
|
||||
logError = log.New(os.Stderr, logPrefixError, log.LstdFlags)
|
||||
} else {
|
||||
f, err := os.OpenFile(file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Unable to open log file for writing: %s", err)
|
||||
}
|
||||
logError = log.New(io.MultiWriter(os.Stderr, f), logPrefixError, log.LstdFlags)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func LogErrorf(format string, v ...interface{}) {
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
logError.Printf(format, v...)
|
||||
}
|
||||
|
||||
func LogErrorln(v ...interface{}) {
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
logError.Println(v...)
|
||||
}
|
||||
|
||||
func LogChatf(format string, v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging chat and commands is turned off.
|
||||
if logChat == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logChat.Printf(format, v...)
|
||||
}
|
||||
|
||||
func LogChatln(v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging chat and commands is turned off.
|
||||
if logChat == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logChat.Println(v...)
|
||||
}
|
||||
|
||||
func LogInfof(format string, v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging info is turned off.
|
||||
if logInfo == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logInfo.Printf(format, v...)
|
||||
}
|
||||
|
||||
func LogInfoln(v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging info is turned off.
|
||||
if logInfo == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logInfo.Println(v...)
|
||||
}
|
||||
|
||||
func LogDebugf(format string, v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging debug is turned off.
|
||||
if logDebug == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logDebug.Printf(format, v...)
|
||||
}
|
||||
|
||||
func LogDebugln(v ...interface{}) {
|
||||
// if logError isn't set to something, logging wasn't setup.
|
||||
if logError == nil {
|
||||
panic("Logging not setup!")
|
||||
}
|
||||
|
||||
// logging debug is turned off.
|
||||
if logDebug == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logDebug.Println(v...)
|
||||
}
|
||||
Reference in New Issue
Block a user