package Loggers
import (
"io"
"os"
"log"
)
var logCloser io.Closer
func MyLogger() {
logFile, err := os.OpenFile("C:/Git/goclassec/src/gclassec/Logs/log.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
if err != nil {
panic(err)
}
logCloser = logFile
log.SetOutput(logFile)
}
func CloseMyLogger() {
logCloser.Close()
}
我想生成四个用于警告,调试,错误和信息的日志文件。 我想控制在运行时应打印哪个文件
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
dou5454954610 2017-02-10 07:57关注You can use
log.Newto create different loggers and wrap it inside your MyLoggerThis is the New format
New(out io.Writer, prefix string, flag int)Here is a sample implementation
Code
package loggers import ( "log" "os" ) //MyLogger custom logger type MyLogger struct { ErrorL *log.Logger InfoL *log.Logger DebugL *log.Logger } //New returns logger //TODO : deal with error func New() *MyLogger { ml := new(MyLogger) if logFile, err := os.OpenFile("C:/Git/goclassec/src/gclassec/Logs/log_error.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666); err == nil { ml.ErrorL = log.New(logFile, "ERROR", log.LUTC) } if logFile, err := os.OpenFile("C:/Git/goclassec/src/gclassec/Logs/log_info.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666); err == nil { ml.InfoL = log.New(logFile, "INFO", log.LUTC) } if logFile, err := os.OpenFile("C:/Git/goclassec/src/gclassec/Logs/log_debug.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666); err == nil { ml.DebugL = log.New(logFile, "DEBUG", log.LUTC) } return ml } func (ml MyLogger) Error(data ...interface{}) { ml.ErrorL.Println(data...) } func (ml MyLogger) Info(data ...interface{}) { ml.InfoL.Println(data...) } func (ml MyLogger) Debug(data ...interface{}) { ml.DebugL.Println(data...) }Usage
logger := loggers.New() logger.Error("Error occured",err) logger.Info("Doing","something","again","blah")本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报