log4go日誌分級輸出

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
//@description調試日誌輸出(各級日誌採用隔離方式)依賴loggor//@author hanse//@data 2017-04-1009:31初稿//2017-05-0421:31調試//2017-05-1721:31增加偵錯模式,大小分割調試OK//2017-05-2521:31修複之前記錄檔名稱錯誤package log4goimport ("log""runtime/debug""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 //FATALvar (IS_DEBUG = false)func SetDebug(debug bool) {IS_DEBUG = debug}//初始化日誌記錄器func _init_() {debugLoger = &loggor.Logger{}infoLoger = &loggor.Logger{}warnLoger = &loggor.Logger{}errorLoger = &loggor.Logger{}fatalLoger = &loggor.Logger{}debugLoger.SetDebug(IS_DEBUG)debugLoger.SetType(LOG_TYPE_DEBUG)debugLoger.SetRollingFile(LOG_TYPE_ROOT_NAME, LOG_TYPE_DEBUG_NAME, 5, 100, loggor.MB)warnLoger.SetDebug(IS_DEBUG)infoLoger.SetType(LOG_TYPE_INFO)infoLoger.SetRollingFile(LOG_TYPE_ROOT_NAME, LOG_TYPE_INFO_NAME, 5, 100, loggor.MB)warnLoger.SetDebug(IS_DEBUG)warnLoger.SetType(LOG_TYPE_WARN)warnLoger.SetRollingFile(LOG_TYPE_ROOT_NAME, LOG_TYPE_WARN_NAME, 5, 100, loggor.MB)errorLoger.SetDebug(IS_DEBUG)errorLoger.SetType(LOG_TYPE_ERROR)errorLoger.SetRollingFile(LOG_TYPE_ROOT_NAME, LOG_TYPE_ERROR_NAME, 5, 100, loggor.MB)fatalLoger.SetDebug(IS_DEBUG)fatalLoger.SetType(LOG_TYPE_FATAL)fatalLoger.SetRollingFile(LOG_TYPE_ROOT_NAME, LOG_TYPE_FATAL_NAME, 5, 100, 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}}

 

390 次點擊  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.