golang日誌分級記錄log4go

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

依賴之前文章的loggor模組(參見http://studygolang.com/articles/9791),可以將日誌分級記錄至檔案,debug、info、warn、error、fatal,結合以下代碼,可將項目中之前的log日誌輸出無縫列印至記錄檔

如:

//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調試日誌輸出(各級日誌採用隔離方式)//@author chenbintao//@data 2017-04-1009:31初稿//2017-05-0421:31調試package log4goimport ("log""runtime/debug"    //此處依賴之前文章的loggor模組"util/loggor")const (_TABLE_ = "\t" //記錄檔行分隔字元)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_TYPE_UNKNOW_NAME = "unknow"LOG_TYPE_DEBUG_NAME  = "debug"LOG_TYPE_INFO_NAME   = "info"LOG_TYPE_WARN_NAME   = "warn"LOG_TYPE_ERROR_NAME  = "error"LOG_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//初始化日誌記錄器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, 500, 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 Servicefunc LogServer() {_init_() //日誌器初始化//(!!!後續增加服務狀態監測,守護進程等)}//帶輸出判斷的行記錄器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://網路方式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}}//帶輸出判斷的格式記錄器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://網路方式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 次點擊  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.