Skip to content

Instantly share code, notes, and snippets.

@2minchul
Created July 29, 2020 01:58
Show Gist options
  • Save 2minchul/7c7dd5c7682b396fd9e27a066ab34ef9 to your computer and use it in GitHub Desktop.
Save 2minchul/7c7dd5c7682b396fd9e27a066ab34ef9 to your computer and use it in GitHub Desktop.
golang logging example
package logging
import (
"io"
"log"
"os"
)
type Logger struct {
Info *log.Logger
Warning *log.Logger
Error *log.Logger
}
func NewLogger(file *os.File) *Logger {
infoWriter := io.MultiWriter(file, os.Stdout)
infoLogger := log.New(infoWriter, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
warningWriter := io.MultiWriter(file, os.Stdout)
warningLogger := log.New(warningWriter, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)
errorWriter := io.MultiWriter(file, os.Stdout)
errorLogger := log.New(errorWriter, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)
return &Logger{Info: infoLogger, Warning: warningLogger, Error: errorLogger}
}
func main() {
logFp, err := os.OpenFile("logfile.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Panicln(err)
}
defer logFp.Close()
logger := NewLogger(logFp)
logger.Info.Println("info")
logger.Warning.Println("warn")
logger.Error.Println("err")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment