如何在 Go-Gorm 中禁用默认错误记录器

     2023-02-24     72

关键词:

【中文标题】如何在 Go-Gorm 中禁用默认错误记录器【英文标题】:How to disable default error logger in Go-Gorm 【发布时间】:2019-09-17 09:49:46 【问题描述】:

我在 MySQL 中使用 GORM,我遇到并处理了错误 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】:

更新:对于 gorm v2

gorm.Config 中使用Logger

db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config
  Logger: logger.Default.LogMode(logger.Silent),
)

对于戈姆v1

使用db.LogMode 使默认错误记录器静音。

LogMode 设置日志模式,true为详细日志,false为无日志,默认只打印错误日志。

db.LogMode(false) 应该可以胜任!

【讨论】:

如何在 Hibernate Search/Lucene 中禁用默认评分/提升?

】如何在HibernateSearch/Lucene中禁用默认评分/提升?【英文标题】:Howtodisabledefaultscoring/boostinginHibernateSearch/Lucene?【发布时间】:2015-08-2221:37:36【问题描述】:我想为我的用户提供最相关和最好的结果。例如,我奖励具有大标题、... 查看详情

加载 Doctrine 固定装置时如何在控制台中禁用查询日志记录?

】加载Doctrine固定装置时如何在控制台中禁用查询日志记录?【英文标题】:HowtodisablequerylogginginconsolewhileloadDoctrinefixtures?【发布时间】:2016-02-0403:51:50【问题描述】:我有一个加载大量数据的固定装置,并且一直遇到这个错误... 查看详情

如何禁用 nuxt 默认错误重定向

】如何禁用nuxt默认错误重定向【英文标题】:HowdoIdisablenuxtdefaulterrorredirection【发布时间】:2020-04-0503:15:30【问题描述】:使用Vuetify设置一个nuxt项目。其中一个页面使用client-only(no-s-s-r)组件。在开发过程中,如果此组件出现错... 查看详情

如何在 Ruby on Rails 3.1 中禁用资产管道(链轮)消息的日志记录?

】如何在RubyonRails3.1中禁用资产管道(链轮)消息的日志记录?【英文标题】:HowcanIdisableloggingofassetpipeline(sprockets)messagesinRubyonRails3.1?【发布时间】:2011-09-1220:04:53【问题描述】:在RubyonRails3.1(RC1)下,默认情况下,Sprockets在(dev)... 查看详情

如何在代码中启用/禁用 spdlog 日志记录?

】如何在代码中启用/禁用spdlog日志记录?【英文标题】:Howtoenable/disablespdlogloggingincode?【发布时间】:2017-08-1019:23:43【问题描述】:我正在我的应用程序中创建c++库模块。要进行日志记录,我使用spdlog。但在生产环境中,我不... 查看详情

如何在 Python Django 中运行单元测试时禁用日志记录?

...程序。我的应用程序本身被配置为使用settings.py中的基本记录器:logging.basicConfig(leve 查看详情

如果发生异常,如何禁用记录 Kafka 批处理中的所有消息?

】如果发生异常,如何禁用记录Kafka批处理中的所有消息?【英文标题】:HowtodisableloggingallmessagesinaKafkabatchincaseofanexception?【发布时间】:2021-09-1121:24:29【问题描述】:将@KafkaListener与批处理一起使用时,错误处理程序会记录整... 查看详情

如何在 react-native 中禁用默认启动画面?

】如何在react-native中禁用默认启动画面?【英文标题】:HowcanIdisabledefaultsplashscreeninreact-native?【发布时间】:2016-06-2421:50:05【问题描述】:有什么办法可以禁用默认启动画面,让我们的应用首先加载主页面?【问题讨论】:【参... 查看详情

如何在 Android 中启用/禁用日志级别?

】如何在Android中启用/禁用日志级别?【英文标题】:HowdoIenable/disableloglevelsinAndroid?【发布时间】:2011-01-0208:39:09【问题描述】:例如,我有很多日志记录语句要调试。Log.v(TAG,"Messagehere");Log.w(TAG,"WARNINGHERE");在设备手机上部署此... 查看详情

如何在 Mac Catalyst 应用程序中禁用默认键盘导航?

】如何在MacCatalyst应用程序中禁用默认键盘导航?【英文标题】:HowtodisabledefaultkeyboardnavigationinMacCatalystapp?【发布时间】:2020-04-1020:06:55【问题描述】:我注意到,在MacCatalyst应用程序中,我可以通过按Mac键盘上的向上和向下箭... 查看详情

如何在flutter中禁用默认的widget飞溅效果(代码片段)

如何在Flutter中禁用默认的Widget飞溅效果默认情况下,许多FlutterMaterialDesign小部件在被选中时会显示飞溅效果。这适用于IconButton,InkWell,ListTile和许多其他部件。如果您正在创建一个完全自定义的设计并希望在整个应... 查看详情

如何在 Flutter Web 中禁用默认浏览器快捷方式?

】如何在FlutterWeb中禁用默认浏览器快捷方式?【英文标题】:HowdoIdisableDefaultBrowserShortcutsinFlutterWeb?【发布时间】:2021-07-0610:01:04【问题描述】:问题如果我在FlutterWeb应用程序中实现CTRL++和CTRL+-的快捷方式,浏览器仍会默认缩放... 查看详情

当我在gridview中过滤行没有找到记录时如何禁用导出按钮

】当我在gridview中过滤行没有找到记录时如何禁用导出按钮【英文标题】:Howtodisableexportbuttonwhenifilterrowsingridviewhasnorecordsfound【发布时间】:2017-06-2516:22:06【问题描述】:在我的应用程序中,如果在过滤数据时在网格视图中没有... 查看详情

如何在 Apache 中停用通知?

】如何在Apache中停用通知?【英文标题】:HowcanIdeactivatenoticesinApache?【发布时间】:2012-10-2914:00:50【问题描述】:我是一个项目的新手,在克隆代码后,我可以在每个http请求上看到几个通知。我总是在我的apache的开发环境中启... 查看详情

如何禁用 ELMAH 未处理的异常日志记录?

】如何禁用ELMAH未处理的异常日志记录?【英文标题】:HowtodisableELMAHunhandledexceptionlogging?【发布时间】:2014-10-2820:22:10【问题描述】:我在global.asax中创建了自定义错误处理,我在其中处理未处理的异常。生成并显示自定义消息... 查看详情

如何在 nvd3 简单折线图中默认禁用某些流?

】如何在nvd3简单折线图中默认禁用某些流?【英文标题】:Howtodisablesomestreamsbydefaultinanvd3SimpleLineChart?【发布时间】:2013-06-0211:28:40【问题描述】:我有几行,我知道点击图例中的“点”会隐藏/显示它。但是,我需要从一些被禁... 查看详情

如何禁用从 Node-RED 到 syslog 的日志记录

】如何禁用从Node-RED到syslog的日志记录【英文标题】:HowtodisableloggingtosyslogfromNode-RED【发布时间】:2020-10-3013:08:39【问题描述】:默认情况下,Node-RED将发送到控制台的每条消息都复制到syslog。谁能知道如何禁用该重复?我只需... 查看详情

在 SwiftUi 中禁用默认按钮单击动画

...mationinSwiftUi【发布时间】:2020-05-0413:31:49【问题描述】:如何在SwiftUI和Swift5中禁用默认的按钮点击动画?我尝试将.animation(.nil)添加到按钮,没有任何更改。我知道您可以执行以下操作:Button(action:)Capsule().buttonStyle(NoAni 查看详情