本文整理汇总了Golang中Logger.Trace函数的典型用法代码示例。如果您正苦于以下问题:Golang Trace函数的具体用法?Golang Trace怎么用?Golang Trace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Trace函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: writePump
// writePump pumps messages from the hub to the websocket connection.
func (c *connection) writePump() {
ticker := time.NewTicker(pingPeriod)
defer func() {
ticker.Stop()
c.ws.Close()
}()
for {
select {
case threadToResponse, ok := <-c.send:
if !ok {
c.write(websocket.CloseMessage, []byte{})
return
}
if err := c.ws.WriteJSON(threadToResponse); err != nil {
l.Output(
logrus.Fields{
l.ErrMsg: l.ErrToStr(err),
l.TraceMsg: l.TraceToStr(l.Trace()),
"Thread": l.Sprintf(threadToResponse),
},
"can not write JSON",
l.Debug,
)
return
}
case <-ticker.C:
if err := c.write(websocket.PingMessage, []byte{}); err != nil {
l.PutErr(err, l.Trace(), l.E_R_PingMsg, websocket.PingMessage)
return
}
}
}
}
示例2: readPump
// readPump pumps messages from the websocket connection to the hub.
func (c *connection) readPump() {
defer func() {
H.Unregister <- c
c.ws.Close()
}()
c.ws.SetReadLimit(maxMessageSize)
c.ws.SetReadDeadline(time.Now().Add(pongWait))
c.ws.SetPongHandler(func(string) error { c.ws.SetReadDeadline(time.Now().Add(pongWait)); return nil })
for {
err := c.ws.ReadJSON(&thread)
if err != nil {
if thread == nil {
break
}
l.Output(
logrus.Fields{
l.ErrMsg: l.ErrToStr(err),
l.TraceMsg: l.TraceToStr(l.Trace()),
"Thread": l.Sprintf(thread),
},
"can not read JSON or Closed Websocket",
l.Debug,
)
break
}
if newThread, err = m.UpdateExistingTimeLine(thread); err != nil {
l.PutErr(err, l.Trace(), l.E_R_Upsert, thread)
}
H.Broadcast <- newThread
}
}
示例3: PostApplyScoreData
func PostApplyScoreData(teamName string, ApplyScore *PostApplyScore) (*Status, error) {
l.PutInfo(l.I_M_PostPage, teamName, ApplyScore)
//更新情報をGlobal変数に格納する
defer SetPlayerCol(ApplyScore.UserIds)
AUserIdInTheTeam := teams[teamName].UserIds[0]
if players[AUserIdInTheTeam].Apply != 0 {
l.Output(
logrus.Fields{
"User Apply": l.Sprintf(players[AUserIdInTheTeam].Apply),
},
"Apply score is already registered",
l.Debug,
)
return &Status{"already registered"}, nil
}
for playerIndex, userId := range ApplyScore.UserIds {
findQuery := bson.M{"userid": userId}
setQuery := bson.M{"$set": bson.M{"apply": ApplyScore.Apply[playerIndex]}}
if err = UpdateMongoData("player", findQuery, setQuery); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Update, ApplyScore.Apply[playerIndex])
return &Status{"failed"}, err
}
}
return &Status{"success"}, nil
}
示例4: UpsertNewTimeLine
func UpsertNewTimeLine(thread *Thread) error {
l.PutInfo(l.I_M_PostPage, thread, nil)
//更新情報をGlobal変数に格納する
defer SetAllThreadCol()
defaultColor := "#c0c0c0"
if len(thread.ThreadId) != 0 {
l.PutErr(nil, l.Trace(), l.E_WrongData, thread)
return errors.New("thread id exists")
}
db, session := mongoConn()
threadCol := db.C("thread")
defer session.Close()
thread.ThreadId = make20lengthHashString()
thread.CreatedAt = time.Now().Format(c.DatetimeFormat)
thread.ColorCode = defaultColor
if err = threadCol.Insert(thread); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Insert, thread)
return err
}
ThreadChan <- thread
return nil
}
示例5: RegisterFieldColData
func RegisterFieldColData(date string, fieldCols []FieldCol) (*Status, error) {
l.PutInfo(l.I_M_RegisterCol, date, fieldCols)
defer SetAllFieldCol()
db, session := mongoConn()
fieldC := db.C("field")
defer session.Close()
var createCnt, updateCnt int
for _, fieldCol := range fieldCols {
if fieldCol.Hole > 18 || fieldCol.Hole < 0 {
l.PutErr(nil, l.Trace(), l.E_WrongData, fieldCol.Hole)
return &Status{"this is not hole number"}, err
}
fieldCol.Ignore = false
fieldCol.Date = date
findQuery := bson.M{"hole": fieldCol.Hole}
change, err := fieldC.Upsert(findQuery, fieldCol)
if err != nil {
l.PutErr(err, l.Trace(), l.E_M_Upsert, fieldCol.Hole)
return &Status{"can not upsert"}, err
}
if change.Updated == 0 {
createCnt += 1
} else {
updateCnt += 1
}
}
return &Status{"success"}, nil
}
示例6: RegisterThreadImg
func RegisterThreadImg(r *RequestTakePictureStatus) (*RequestTakePictureStatus, error) {
l.PutInfo(l.I_M_RegisterCol, r, nil)
defer SetPlayerCol([]string{r.UserId})
if len(r.ThreadId) == 0 {
return nil, errors.New("there is not thread id")
}
if len(r.PhotoUrl) == 0 {
return nil, errors.New("there is not pthoto url ")
}
threadFindQuery := bson.M{"threadid": r.ThreadId}
threadSetQuery := bson.M{"$set": bson.M{"imgurl": r.PhotoUrl}}
if err = UpdateMongoData("thread", threadFindQuery, threadSetQuery); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Update, r.PhotoUrl)
return &RequestTakePictureStatus{Status: "failed"}, err
}
var photoKey string
if r.Positive {
photoKey = "positivephotourl"
} else {
photoKey = "negativephotourl"
}
playerFindQuery := bson.M{"userid": r.UserId}
playerSetQuery := bson.M{"$set": bson.M{photoKey: r.PhotoUrl}}
if err = UpdateMongoData("player", playerFindQuery, playerSetQuery); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Update, r.PhotoUrl)
return &RequestTakePictureStatus{Status: "failed"}, err
}
SetAllThreadCol()
thread := &Thread{
ThreadId: r.ThreadId,
UserId: threads[r.ThreadId].UserId,
UserName: threads[r.ThreadId].UserName,
Msg: threads[r.ThreadId].Msg,
ImgUrl: threads[r.ThreadId].ImgUrl,
ColorCode: threads[r.ThreadId].ColorCode,
Positive: threads[r.ThreadId].Positive,
CreatedAt: threads[r.ThreadId].CreatedAt,
}
ThreadChan <- thread
requestTakePictureStatus, err := RequestTakePicture(r.TeamUserIds)
if err != nil {
return nil, err
}
if len(requestTakePictureStatus.ThreadId) != 0 {
return requestTakePictureStatus, nil
}
return &RequestTakePictureStatus{Status: "success"}, nil
}
示例7: GetJosekiMove
func (player TMainPlayer) GetJosekiMove(ban *TBan, all_moves *map[int]*TMove) *TMove {
logger := GetLogger()
current_sfen := ban.ToSFEN(false)
// 現在の局面に定跡が登録されているか確認する
fix_move, fix_move_exists := player.Joseki.FixOpening[*(ban.Tesuu)+1]
var fix_move_string string = ""
if fix_move_exists {
fix_move_string = fix_move.GetUSIMoveString()
logger.Trace("[MainPlayer] fix_move_string is: " + fix_move_string)
} else {
sfen_joseki_move, exists := player.Joseki.SFENMap[current_sfen]
if exists {
fix_move_string = sfen_joseki_move.GetUSIMoveString()
logger.Trace("[MainPlayer] sfen_joseki_move_string is: " + fix_move_string)
}
}
// 定跡手が存在する場合、(念のため)手があることを確認して返す
if fix_move_string != "" {
for key, move := range *all_moves {
move_string := move.GetUSIMoveString()
if fix_move_string == move_string {
return (*all_moves)[key]
} else {
continue
}
}
}
return nil
}
示例8: RegisterTeamColData
func RegisterTeamColData(date string, teamCols []TeamCol) (*Status, error) {
l.PutInfo(l.I_M_RegisterCol, date, teamCols)
defer SetAllPlayerCol()
defer SetAllTeamCol()
db, session := mongoConn()
playerC := db.C("player")
teamC := db.C("team")
defer session.Close()
var OneBeforebyteOfA byte = 64
alphabet := make([]byte, 1)
alphabet[0] = OneBeforebyteOfA
totalHoleNum := 18
for _, teamCol := range teamCols {
if len(teamCol.UserIds) == 0 {
l.PutErr(nil, l.Trace(), l.E_Nil, teamCol)
return &Status{"this team do not have user id"}, nil
}
alphabet[0] += 1
teamCol.Name = string(alphabet)
teamCol.Defined = false
teamCol.Date = date
if err := teamC.Insert(teamCol); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Insert, teamCol)
return &Status{"can not insert"}, err
}
for _, userId := range teamCol.UserIds {
scores := []bson.M{}
for holeNum := 1; holeNum <= totalHoleNum; holeNum++ {
score := bson.M{
"hole": holeNum,
"putt": 0,
"total": 0,
}
scores = append(scores, score)
}
player := PlayerCol{
UserId: userId,
Score: scores,
Date: date,
}
if err := playerC.Insert(player); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Insert, player)
return &Status{"can not insert"}, err
}
}
}
return &Status{"success"}, nil
}
示例9: PostScoreEntrySheetPageData
func PostScoreEntrySheetPageData(teamName string, holeString string, teamScore *PostTeamScore) (*RequestTakePictureStatus, error) {
l.PutInfo(l.I_M_PostPage, teamName, teamScore)
userIds := teams[teamName].UserIds
//更新情報をGlobal変数に格納する
defer SetPlayerCol(userIds)
if len(holeString) == 0 {
l.PutErr(nil, l.Trace(), l.E_Nil, teamName)
return &RequestTakePictureStatus{Status: "failed"}, errors.New("hole is not string")
}
holeNum, _ := strconv.Atoi(holeString)
holeIndex := holeNum - 1
holeIndexString := strconv.Itoa(holeIndex)
if teamScore.Excnt != excnt[teamName][holeNum] {
return &RequestTakePictureStatus{Status: "other updated"}, nil
} else {
excnt[teamName][holeNum]++
}
for playerIndex, userId := range teamScore.UserIds {
total, putt := teamScore.Total[playerIndex], teamScore.Putt[playerIndex]
findQuery := bson.M{"userid": userId}
setQuery := bson.M{
"$set": bson.M{
"score." + holeIndexString + ".total": total,
"score." + holeIndexString + ".putt": putt,
},
}
if err = UpdateMongoData("player", findQuery, setQuery); err != nil {
l.PutErr(err, l.Trace(), l.E_M_Update, userId)
return &RequestTakePictureStatus{Status: "failed update score"}, err
}
}
// Thread登録
if err := RegisterThreadOfScore(holeString, teamScore); err != nil {
l.PutErr(err, l.Trace(), l.E_M_RegisterThread, teamScore)
return nil, err
}
// チーム内に写真リクエストがあるか確認する
requestTakePictureStatus, err := RequestTakePicture(userIds)
if err != nil {
l.PutErr(err, l.Trace(), l.E_M_SearchPhotoTask, userIds)
return nil, err
}
return requestTakePictureStatus, nil
}
示例10: DoMove
func (ban TBan) DoMove(from TPosition, to TPosition, promote bool) {
logger := GetLogger()
// fromにある駒を取得
from_masu := ban.AllMasu[from]
from_koma := ban.AllKoma[from_masu.KomaId]
if from_koma == nil {
// 盤と手、どちらかがおかしい
logger.Trace("ERROR!! no Koma exists at: " + s(from))
return
}
// fromにある手を取得
moves := ban.AllMoves[from_koma.Id]
var move *TMove = nil
for _, value := range moves.Map {
if value.ToPosition == to {
move = value
break
}
}
if move == nil {
// 盤と手、どちらかがおかしい
logger.Trace("ERROR!! Koma at: " + s(from) + ",no Move exists to: " + s(to))
return
} else {
if move.ToId == 0 {
// 相手の駒を取る手ではない
} else {
// 相手の駒を取る
capture_koma := ban.AllKoma[move.ToId]
if capture_koma.Position != to {
logger.Trace("ERROR!! capture_koma id " + s(move.ToId) + " is at: " + s(capture_koma.Position))
} else {
ban.CaptureKoma(move.ToId)
}
}
}
// fromにある駒をいったん盤から取り除く
ban.RemoveKoma(from_masu.KomaId)
// 取り除いた駒をtoに置く
from_koma.Position = to
// 駒が成る場合
if promote {
from_koma.Promoted = true
}
ban.PutKoma(from_koma)
}
示例11: GetScoreEntrySheetPageData
func GetScoreEntrySheetPageData(teamName string, holeString string) (*ScoreEntrySheet, error) {
l.PutInfo(l.I_M_GetPage, teamName, holeString)
if len(holeString) == 0 {
l.PutErr(nil, l.Trace(), l.E_Nil, teamName)
return nil, errors.New("hole string is nil")
}
holeNum, _ := strconv.Atoi(holeString)
holeIndex := holeNum - 1
field := fields[holeNum]
userIds := teams[teamName].UserIds
member := make([]string, len(userIds))
total := make([]int, len(userIds))
putt := make([]int, len(userIds))
for i, userId := range userIds {
member[i] = users[userId].Name
total[i] = players[userId].Score[holeIndex]["total"].(int)
putt[i] = players[userId].Score[holeIndex]["putt"].(int)
}
scoreEntrySheet := ScoreEntrySheet{
Team: teamName,
Hole: holeNum,
Member: member,
UserIds: userIds,
Par: field.Par,
Yard: field.Yard,
Total: total,
Putt: putt,
Excnt: excnt[teamName][holeNum],
}
return &scoreEntrySheet, nil
}
示例12: make20lengthHashString
func make20lengthHashString() string {
b := make([]byte, 32)
if _, err := io.ReadFull(rand.Reader, b); err != nil {
l.PutErr(err, l.Trace(), l.E_MakeHash, rand.Reader)
}
longHash := strings.TrimRight(base32.StdEncoding.EncodeToString(b), "=")
return string([]rune(longHash)[:20])
}
示例13: ServeWs
// serveWs handles websocket requests from the peer.
func ServeWs(w http.ResponseWriter, r *http.Request) {
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
l.PutErr(err, l.Trace(), l.E_R_Upgrader, nil)
return
}
c := &connection{send: make(chan *m.Thread, 256), ws: ws}
H.Register <- c
go c.writePump()
c.readPump()
}
示例14: CheckEmptyMasu
func (ban *TBan) CheckEmptyMasu() {
logger := GetLogger()
empty_masu := make([]TPosition, 81)
fu_drop_sente := make([]byte, 0)
fu_drop_gote := make([]byte, 0)
var x, y byte = 1, 1
for x <= 9 {
fu_sente := false
fu_gote := false
y = 1
for y <= 9 {
pos := Bytes2TPosition(x, y)
// logger.Trace("CheckEmptyMasu pos: " + s(pos))
masu := ban.AllMasu[pos]
if masu.KomaId == 0 {
// 空いたマスを保存
empty_masu = append(empty_masu, pos)
// logger.Trace("CheckEmptyMasu append. pos: " + s(pos))
} else {
koma := ban.AllKoma[masu.KomaId]
if koma.Position != pos {
// ありえないが、バグとしてありえるので予め
logger.Trace("CheckEmptyMasu Ghost Koma Id: " + s(koma.Id))
masu.KomaId = 0
empty_masu = append(empty_masu, pos)
} else {
// その列の歩の有無をチェック
if koma.Kind == Fu {
if koma.IsSente {
fu_sente = true
} else {
fu_gote = true
}
}
}
}
y++
}
if !fu_sente {
fu_drop_sente = append(fu_drop_sente, x)
}
if !fu_gote {
fu_drop_gote = append(fu_drop_gote, x)
}
x++
}
// 独自のstructに値を保存するには、レシーバをアドレス表記にする必要がある。
ban.EmptyMasu = empty_masu
ban.FuDropSente = fu_drop_sente
ban.FuDropGote = fu_drop_gote
// logger.Trace("CheckEmptyMasu ok: " + s(empty_masu))
}
示例15: SetAllUserCol
func SetAllUserCol() {
db, session := mongoConn()
col := db.C("user")
defer session.Close()
usersCol := []UserCol{}
if err = col.Find(nil).All(&usersCol); err != nil {
l.PutErr(err, l.Trace(), l.E_M_FindEntireCol, nil)
}
for _, userCol := range usersCol {
users[userCol.UserId] = userCol
}
}