當前位置: 首頁>>代碼示例>>Golang>>正文


Golang logUtil.Log函數代碼示例

本文整理匯總了Golang中github.com/Jordanzuo/goutil/logUtil.Log函數的典型用法代碼示例。如果您正苦於以下問題:Golang Log函數的具體用法?Golang Log怎麽用?Golang Log使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了Log函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: StartServer

// 啟動服務器
// wg:WaitGroup
// serverAddress:服務器監聽地址
// getPlayerFunc:獲取玩家對象的方法
func StartServer(wg *sync.WaitGroup, serverAddress string, getPlayerFunc func(*Client, string) (*player.Player, ResultStatus)) {
	defer func() {
		wg.Done()
	}()

	// 設置配置參數
	SetRPCParam(serverAddress, getPlayerFunc)

	logUtil.Log("Socket服務器開始監聽...", logUtil.Info, true)

	// 監聽指定的端口
	listener, err := net.Listen("tcp", ServerAddress())
	if err != nil {
		panic(fmt.Errorf("Listen Error: %s", err))
	} else {
		msg := fmt.Sprintf("Got listener for client. (local address: %s)", listener.Addr())

		// 記錄和顯示日誌,並且判斷是否需要退出
		logUtil.Log(msg, logUtil.Info, true)
		fmt.Println(msg)
	}

	for {
		// 阻塞直至新連接到來
		conn, err := listener.Accept()
		if err != nil {
			logUtil.Log(fmt.Sprintf("Accept Error: %s", err), logUtil.Error, true)
			continue
		}

		// 啟動一個新協程來處理鏈接(每個客戶端對應一個協程)
		go handleConn(conn)
	}
}
開發者ID:Jordanzuo,項目名稱:GameServer_Go,代碼行數:38,代碼來源:start.go

示例2: StartServer

// 啟動服務器
// wg:WaitGroup
func StartServer(wg *sync.WaitGroup) {
	defer func() {
		wg.Done()
	}()

	logUtil.Log("Socket服務器開始監聽...", logUtil.Info, true)

	// 監聽指定的端口
	msg := ""
	listener, err := net.Listen("tcp", ServerAddress())
	if err != nil {
		msg = fmt.Sprintf("Listen Error: %s", err)
	} else {
		msg = fmt.Sprintf("Got listener for the server. (local address: %s)", listener.Addr())
	}

	// 記錄和顯示日誌,並且判斷是否需要退出
	logUtil.Log(msg, logUtil.Info, true)
	fmt.Println(msg)
	if err != nil {
		return
	}

	for {
		// 阻塞直至新連接到來
		conn, err := listener.Accept()
		if err != nil {
			logUtil.Log(fmt.Sprintf("Accept Error: %s", err), logUtil.Error, true)
			continue
		}

		// 啟動一個新協程來處理鏈接
		go handleConn(conn)
	}
}
開發者ID:Jordanzuo,項目名稱:LogServer_Go,代碼行數:37,代碼來源:start.go

示例3: SaveToFile

// 將通道裏麵的所有內容寫入到文件中
func SaveToFile() {
	logUtil.Log(fmt.Sprintf("通道中尚未被處理的數據量為:%d", len(dataChannel)), logUtil.Debug, true)

	// 組裝數據到dataSlice中,並保存到日誌文件
	dataSlice := make([]string, 0, 1024)

	logUtil.Log("開始取通道中的數據", logUtil.Debug, true)
	if len(dataChannel) > 0 {
	Outer:
		for {
			select {
			case data := <-dataChannel:
				dataSlice = append(dataSlice, data)
				dataSlice = append(dataSlice, stringUtil.GetNewLineString())
			default:
				break Outer
			}
		}
	}
	logUtil.Log("取通道中的數據結束", logUtil.Debug, true)

	logUtil.Log("開始保存數據到文件", logUtil.Debug, true)
	if len(dataSlice) > 0 {
		fileUtil.WriteFile(config.SAVE_DATA_PATH, fmt.Sprintf("%s.sql", timeUtil.Format(time.Now(), "yyyy-MM-dd")), true, dataSlice...)
	}
	logUtil.Log("保存數據到文件結束", logUtil.Debug, true)
}
開發者ID:Jordanzuo,項目名稱:LogServer_Go,代碼行數:28,代碼來源:data.go

示例4: startClient

// 啟動客戶端
func startClient(ch chan int, loginSucceedCh chan int, currId int) {
	// 處理內部未處理的異常,以免導致主線程退出,從而導致係統崩潰
	defer func() {
		if r := recover(); r != nil {
			logUtil.Log(fmt.Sprintf("通過recover捕捉到的未處理異常:%v", r), logUtil.Error, true)
		}
	}()

	conn, err := net.DialTimeout("tcp", ServerAddress, 5*time.Second)
	if err != nil {
		fmt.Printf("第%d個客戶端啟動失敗,請檢查\n", currId)
		ch <- currId
		return
	}

	defer func() {
		conn.Close()
		ch <- currId
	}()

	// 創建客戶端對象,並添加到列表中
	clientObj := client.NewClient(&conn, conn)
	ClientList[clientObj.Id] = false

	// 登陸
	go login(clientObj, currId)

	// 發送心跳包
	go heartBeat(clientObj, loginSucceedCh)

	// 死循環,不斷地讀取數據,解析數據,發送數據
	for {
		// 先讀取數據,每次讀取1024個字節
		readBytes := make([]byte, 1024)
		n, err := conn.Read(readBytes)
		if err != nil {
			var errMsg string

			// 判斷是連接關閉錯誤,還是普通錯誤
			if err == io.EOF {
				errMsg = fmt.Sprintf("另一端關閉了連接:%s", err)
			} else {
				errMsg = fmt.Sprintf("讀取數據錯誤:%s", err)
			}

			logUtil.Log(errMsg, logUtil.Error, true)

			break
		}

		// 將讀取到的數據追加到已獲得的數據的末尾
		clientObj.AppendContent(readBytes[:n])

		// 已經包含有效的數據,處理該數據
		handleClient(clientObj, loginSucceedCh)
	}
}
開發者ID:Jordanzuo,項目名稱:ChatClient_Go_Test,代碼行數:58,代碼來源:main.go

示例5: startClient

// 啟動客戶端
func startClient(ch chan int, clientCh chan *client.Client, loginSucceedCh chan int) {
	// 處理內部未處理的異常,以免導致主線程退出,從而導致係統崩潰
	defer func() {
		if r := recover(); r != nil {
			logUtil.Log(fmt.Sprintf("通過recover捕捉到的未處理異常:%v", r), logUtil.Error, true)
		}
	}()

	conn, err := net.DialTimeout(SERVER_NETWORK, ServerAddress, 2*time.Second)
	if err != nil {
		fmt.Printf("Dial Error: %s\n", err)
		ch <- 0
		return
	}
	defer func() {
		conn.Close()
		ch <- 1
	}()

	// 創建客戶端對象
	clientObj := client.NewClient(&conn, conn)

	// 打印日誌
	fmt.Printf("Connected to server. (remote address: %s, local address: %s)\n", conn.RemoteAddr(), conn.LocalAddr())

	// 寫入1表示啟動成功,則main線程可以繼續往下進行
	ch <- 1
	clientCh <- clientObj

	// 死循環,不斷地讀取數據,解析數據,發送數據
	for {
		// 先讀取數據,每次讀取1024個字節
		readBytes := make([]byte, 1024)
		n, err := conn.Read(readBytes)
		if err != nil {
			var errMsg string

			// 判斷是連接關閉錯誤,還是普通錯誤
			if err == io.EOF {
				errMsg = fmt.Sprintf("另一端關閉了連接:%s", err)
			} else {
				errMsg = fmt.Sprintf("讀取數據錯誤:%s", err)
			}

			logUtil.Log(errMsg, logUtil.Error, true)

			break
		}

		// 將讀取到的數據追加到已獲得的數據的末尾
		clientObj.AppendContent(readBytes[:n])

		// 已經包含有效的數據,處理該數據
		handleClient(clientObj, loginSucceedCh)
	}
}
開發者ID:Jordanzuo,項目名稱:ChatClient_Go,代碼行數:57,代碼來源:main.go

示例6: SaveHistoryMessage

// 保存曆史消息
func SaveHistoryMessage() {
	logUtil.Log("開始保存曆史消息...", logUtil.Info, true)

	// 保存世界曆史消息
	saveWorldHistoryMessage()

	// 保存公會曆史消息
	saveUnionHistoryMessage()

	logUtil.Log("保存曆史消息完成...", logUtil.Info, true)
}
開發者ID:Jordanzuo,項目名稱:ChatServer_Go,代碼行數:12,代碼來源:historyMessage.go

示例7: writeRequestLog

func writeRequestLog(apiName string, r *http.Request) error {
	log, err := json.Marshal(r.Form)
	if err != nil {
		logUtil.Log(fmt.Sprintf("序列化數據錯誤,原始數據位:%v,錯誤信息為:%s", r.Form, err), logUtil.Error, true)
		return err
	}

	logInfo := fmt.Sprintf("Web服務器收到請求。ApiName:%s, Param:%s", apiName, string(log))
	logUtil.Log(logInfo, logUtil.Debug, true)

	return nil
}
開發者ID:Jordanzuo,項目名稱:GameServer_Go,代碼行數:12,代碼來源:serverMux.go

示例8: saveWorldHistoryMessage

// 保存世界曆史消息
func saveWorldHistoryMessage() {
	logUtil.Log("開始保存世界曆史消息...", logUtil.Info, true)

	worldHistoryMessageMutex.RLock()
	defer worldHistoryMessageMutex.RUnlock()

	if bytes, err := json.Marshal(worldHistoryMessageList); err == nil {
		fileUtil.WriteFile(con_HistoryPath, getWorldHistoryMessageFileName(), false, string(bytes))
	}

	logUtil.Log("保存世界曆史消息完成...", logUtil.Info, true)
}
開發者ID:Jordanzuo,項目名稱:ChatServer_Go,代碼行數:13,代碼來源:historyMessage_World.go

示例9: StopServer

// 停止服務器
func StopServer() {
	logUtil.Log("1、開始停止服務器", logUtil.Debug, true)

	// 斷開客戶端連接
	logUtil.Log("2、開始斷掉所有客戶端連接", logUtil.Debug, true)
	for _, value := range ClientList() {
		value.conn.Close()
	}
	logUtil.Log("3、斷掉所有客戶端連接結束", logUtil.Debug, true)

	// 保存數據
	logUtil.Log("4、開始保存未處理的數據", logUtil.Debug, true)
	data.SaveToFile()
	logUtil.Log("5、保存未處理的數據結束", logUtil.Debug, true)
}
開發者ID:Jordanzuo,項目名稱:LogServer_Go,代碼行數:16,代碼來源:stop.go

示例10: saveUnionHistoryMessage

// 保存公會曆史消息
func saveUnionHistoryMessage() {
	logUtil.Log("開始保存公會曆史消息...", logUtil.Info, true)

	unionHistoryMessageMutex.RLock()
	defer unionHistoryMessageMutex.RUnlock()

	// 遍曆所有的曆史消息,每個公會保存為一個文件
	for unionId, messageList := range unionHistoryMessageList {
		if bytes, err := json.Marshal(messageList); err == nil {
			fileUtil.WriteFile(con_HistoryPath, getUnionHistoryMessageFileName(unionId), false, string(bytes))
		}
	}

	logUtil.Log("保存公會曆史消息完成...", logUtil.Info, true)
}
開發者ID:Jordanzuo,項目名稱:ChatServer_Go,代碼行數:16,代碼來源:historyMessage_Union.go

示例11: handleClientContent

func handleClientContent(clientObj *Client) {
	validMessageList := make([]string, 0)

	for {
		content, ok := clientObj.GetValieMessage()
		if !ok {
			break
		}

		// 處理數據,如果長度為0則表示心跳包
		if len(content) == 0 {
			continue
		} else {
			atomic.AddInt64(&totalSize, int64(len(content)))

			// 先進行解壓縮
			content, err := zlibUtil.Decompress(content)
			if err != nil {
				logUtil.Log(fmt.Sprintf("zlib解壓縮錯誤,錯誤信息為:%s", err), logUtil.Error, true)
				break
			}

			validMessageList = append(validMessageList, string(content))
		}
	}

	// 添加數據
	if len(validMessageList) > 0 {
		data.AddData(validMessageList)
	}
}
開發者ID:Jordanzuo,項目名稱:LogServer_Go,代碼行數:31,代碼來源:start.go

示例12: GetPlayer

func GetPlayer(id string) (playerObj *player.Player, exists bool, err error) {
	command := "SELECT Name, UnionId, ExtraMsg, RegisterTime, LoginTime, IsForbidden, SilentEndTime FROM player WHERE Id = ?;"

	var name string
	var unionId string
	var extraMsg string
	var registerTime time.Time
	var loginTime time.Time
	var isForbidden bool
	var silentEndTime time.Time
	if err = dal.ChatDB().QueryRow(command, id).Scan(&name, &unionId, &extraMsg, &registerTime, &loginTime, &isForbidden, &silentEndTime); err != nil {
		if err == sql.ErrNoRows {
			// 重置err,使其為nil;因為這代表的是沒有查找到數據,而不是真正的錯誤
			err = nil
			return
		} else {
			logUtil.Log(fmt.Sprintf("Scan失敗,錯誤信息:%s,command:%s", err, command), logUtil.Error, true)
			return
		}
	}

	playerObj = player.NewPlayer(id, name, unionId, extraMsg, registerTime, loginTime, isForbidden, silentEndTime)
	exists = true

	return
}
開發者ID:Jordanzuo,項目名稱:ChatServer_Go,代碼行數:26,代碼來源:chatPlayer.go

示例13: GetGamePlayer

func GetGamePlayer(id string) (name string, unionId string, exists bool, err error) {
	command := "SELECT p.Name, g.GuildId FROM p_player p LEFT JOIN p_guild_info g ON p.Id = g.PlayerId WHERE p.Id = ?;"

	var guildId interface{}
	if err = dal.GameDB().QueryRow(command, id).Scan(&name, &guildId); err != nil {
		if err == sql.ErrNoRows {
			// 重置err,使其為nil;因為這代表的是沒有查找到數據,而不是真正的錯誤
			err = nil
			return
		} else {
			logUtil.Log(fmt.Sprintf("Scan失敗,錯誤信息:%s,command:%s", err, command), logUtil.Error, true)
			return
		}
	}
	exists = true

	// 處理公會Id
	if guildId != nil {
		if unionIdArr, ok := guildId.([]byte); ok {
			unionId = string(unionIdArr)
		}
	}

	return
}
開發者ID:Jordanzuo,項目名稱:ChatServer_Go,代碼行數:25,代碼來源:gamePlayer.go

示例14: clearExpiredClient

func clearExpiredClient() {
	// 處理內部未處理的異常,以免導致主線程退出,從而導致係統崩潰
	defer func() {
		if r := recover(); r != nil {
			logUtil.LogUnknownError(r)
		}
	}()

	for {
		// 休眠指定的時間(單位:秒)(放在此處是因為程序剛啟動時並沒有過期的客戶端,所以先不用占用資源;)
		time.Sleep(CheckExpiredInterval() * time.Second)

		// 清理之前的客戶端數量和玩家數量
		beforeClientCount := len(clientList)
		beforePlayerCount := len(playerList)

		// 獲取本次清理的客戶端數量
		expiredClientCount := 0

		// 開始清理
		for _, item := range clientList {
			if item.HasExpired() {
				expiredClientCount++
				item.Quit()
			}
		}

		// 記錄日誌
		if expiredClientCount > 0 {
			logUtil.Log(fmt.Sprintf("清理前的客戶端數量為:%d, 清理前的玩家數量為:%d, 本次清理不活躍的數量為:%d", beforeClientCount, beforePlayerCount, expiredClientCount), logUtil.Debug, true)
		}
	}
}
開發者ID:Jordanzuo,項目名稱:RPCServer_Go,代碼行數:33,代碼來源:rpc.go

示例15: init

func init() {
	// 設置日誌文件的存儲目錄
	logUtil.SetLogPath(filepath.Join(fileUtil.GetCurrentPath(), LOG_PATH_SUFFIX))

	// 記錄啟動成功日誌
	logUtil.Log("客戶端啟動成功", logUtil.Info, true)
}
開發者ID:Jordanzuo,項目名稱:ChatClient_Go,代碼行數:7,代碼來源:main.go


注:本文中的github.com/Jordanzuo/goutil/logUtil.Log函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。