This is a creation in Article, where the information may have evolved or changed.
Depending on the Loggor module of the previous article (see http://studygolang.com/articles/9791), log ratings can be recorded to a file, debug, info, warn, error, fatal, combined with the following code, Seamlessly print the previous log log output from the project to the log file
Such as:
Import "Log"
Import Log "Util/mlog"
.....
Log. Println (".........")
//@description调试日志输出//@author chenbintao//@data 2017-04-1009:31初稿//2017-05-0421:31调试package mlogimport ("tool/log4go")func Println(message ...interface{}) {log4go.Println(true, log4go.LEVER_DEBUG, log4go.MODE_FILE, message)}
@description Debug Log output (isolation of all levels of logging)//@author chenbintao//@data 2017-04-1009:31 First draft//2017-05-0421:31 DEBUG package Log4goimport ("Log" "Runtime/debug"///here depends on the previous article Loggor module "Util/loggor") const (_table_ = "\ T"//log file line delimiter) const (lever_ Unknow = 0lever_debug = 1lever_info = 2lever_warn = 3lever_error = 4lever_fatal = 5) const (Mode_stdio = 1mode_file = 2mode_net = 3) const (Log_type_unknow = 1000log_type_debug = 1001log_type_info = 1002log_type_warn = 1003LOG_TYPE _error = 1004log_type_fatal = 1005) const (Log_type_root_name = "./logs/level/"//log path can be configured by itself Log_type_unknow_name = "Unkno W "log_type_debug_name =" DEBUG "log_type_info_name =" INFO "log_type_warn_name =" WARN "log_type_error_name =" ERROR "LO G_type_fatal_name = "FATAL") var debugloger *loggor. Logger//debugvar Infologer *loggor. Logger//infovar Warnloger *loggor. Logger//warnvar Errorloger *loggor. Logger//errorvar Fatalloger *loggor. Logger//fatal//Initialize the logger func _init_ () {Debugloger = &loggor. Logger{}infologer = &loggOr. Logger{}warnloger = &loggor. Logger{}errorloger = &loggor. Logger{}fatalloger = &loggor. Logger{}debugloger.settype (Log_type_debug) debugloger.setrollingfile (Log_type_root_name, LOG_TYPE_DEBUG_NAME, 2, , Loggor. MB) Infologer.settype (log_type_info) infologer.setrollingfile (Log_type_root_name, Log_type_debug_name, 2, 500, Loggor. MB) Warnloger.settype (Log_type_warn) warnloger.setrollingfile (Log_type_root_name, Log_type_debug_name, 2, 500, Loggor. MB) Errorloger.settype (log_type_error) errorloger.setrollingfile (Log_type_root_name, LOG_TYPE_DEBUG_NAME, 2, 500, Loggor. MB) Fatalloger.settype (log_type_fatal) fatalloger.setrollingfile (Log_type_root_name, LOG_TYPE_DEBUG_NAME, 2, 500, Loggor. MB)}//Log service func logserver () {_init_ ()//Logger initialization//(!!! Subsequent increase in service status monitoring, daemon, etc.)}//with output judgment of the line recorder func Println (enable bool, lever int, mode int, message ... interface{}) {if!enable {return} Defer func () {if e, ok: = Recover (). ( Error); OK {log. Println ("Err:panic in%s-%v", message, e) log. Println (String (Debug. Stack ()))}}() switch mode {case Mode_stdio:log. PRINTLN (message) breakcase mode_net://network mode breakcase mode_file:if nil = infologer {_init_ ()}switch Lever {case Lever_ DEBUG: (*debugloger). PRINTLN (message) breakcase Lever_info: (*infologer). PRINTLN (message) breakcase Lever_warn: (*warnloger). PRINTLN (message) breakcase Lever_error: (*errorloger). PRINTLN (message) breakcase lever_fatal: (*fatalloger). PRINTLN (message) breakdefault:break}breakdefault:break}}//with output-judged format recorder func Printf (enable bool, lever int, mode int, format string, message ... interface{}) {if!enable {return}defer func () {if e, ok: = Recover (). ( Error); OK {log. Println ("Err:panic in%s-%v", message, e) log. Println (String (Debug. Stack ()))}} () switch mode {case Mode_stdio:log. PRINTLN (format, message) breakcase mode_net://network mode breakcase mode_file:if nil = infologer {_init_ ()}switch Lever {case Lever_debug: (*debugloger). PRINTLN (format, message) Breakcase Lever_info: (*infologer). PRINTLN (format, message) Breakcase Lever_warn: (*warnloger). PRINTLN (format, message)Breakcase lever_error: (*errorloger). PRINTLN (format, message) Breakcase lever_fatal: (*fatalloger). PRINTLN (format, message) Breakdefault:break}breakdefault:break}}
648 Reads