Как отключить регистратор ошибок по умолчанию в Go-Gorm - PullRequest
2 голосов
/ 28 апреля 2019

Я использую GORM с MySQL, я обнаружил и обработал ошибку Error 1062: Duplicate entry.Проблема в том, что он все еще выводится на консоль.

Код в gym/models/auth.go:49:

func AddAuth(username, password string) error {
    passwordHash, err := auth.HashPassword(password, argon2Conf)
    if err != nil {
        return err
    }
    userAuth := Auth{
        Username: username,
        Password: passwordHash,
    }
    return db.Create(&userAuth).Error
}

Я обрабатываю ошибку в функции обработчика:

func SignUpHandler(c *gin.Context) {
    var form user
    if err := c.ShouldBind(&form); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    if err := models.AddAuth(form.Username, form.Password); err == nil {
        c.JSON(http.StatusOK, gin.H{"status": "you are signed in"})
    } else {
        // I think I have handled the sql error here
        c.JSON(http.StatusBadRequest, gin.H{"error": "sign in failed"})
    }
}

Когда я отправляю запрос POST, ошибка корректно обрабатывается, и я получаю правильный ответ с помощью {"error": "sign in failed"}.Но консоль все еще печатает это сообщение об ошибке:

(/...../gym/models/auth.go:49) 
[2019-04-28 23:37:06]  Error 1062: Duplicate entry '123123' for key 'username' 
[GIN] 2019/04/28 - 23:37:06 | 400 |  136.690908ms |             ::1 | POST     /signup

Я сбит с толку, так как обработал ошибку, но она все еще печатается.Как предотвратить печатание этой ошибки в журнале ошибок?Или я исправляю ошибку правильно?

1 Ответ

4 голосов
/ 28 апреля 2019

Используйте db.LogMode , чтобы отключить регистратор ошибок по умолчанию.

Режим журнала, установленный LogMode, true для подробных журналов, false без журнала, по умолчанию будет печатать только журналы ошибок.

db.LogMode(false) должен сделать работу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...