当前位置: 首页 > 知识库问答 >
问题:

你如何得到一个Golang程序来打印它刚刚调用的错误的行号?

岳俊晖
2023-03-14

我试图用log.fatal在我的Golang程序中抛出错误,但是log.fatal并不打印运行log.fatal的行。是否无法访问调用log.fatal的行号?也就是说,在抛出错误时,是否有方法获取行号?

我试图谷歌这个,但不确定如何。我能得到的最好的东西是打印堆栈跟踪,我想这是好的,但可能有点太多了。我也不想每次需要行号时都编写debug.printstack(),我只是很惊讶没有任何内置函数用于此,比如log.fatalstacktrace()或一些不是服装的函数。

“啊,好吧,所以它扔了一个错误,做了X...”

了解我的代码的人越少越好:)

共有1个答案

公羊宇定
2023-03-14

您可以在自定义记录器上设置标志,也可以在默认值中设置包括llongfilelshortfile

// to change the flags on the default logger
log.SetFlags(log.LstdFlags | log.Lshortfile)
 类似资料:
  • 问题内容: 我试图用Golang程序抛出错误,但同时也没有打印出运行行。无法访问名为log.Fatal的行号吗?即有没有办法在抛出错误时获取行号? 我试图用谷歌搜索,但不确定如何。我能得到的最好的结果是打印堆栈跟踪信息,我认为这很好,但可能有点过多。我也不想每次都需要行号时就写东西,我只是感到惊讶,没有任何内置函数可以用于这种或非服装的东西。 另外,我不想制作自己的调试/错误处理工具的原因是,我不

  • 问题内容: 如何撤消最近执行的mysql查询? 问题答案: 如果将表类型定义为InnoDB,则可以使用事务。您将需要set ,并且可以在发出之后或在查询或会话结束时提交或取消交易。

  • 问题内容: 如果所有数据被意外删除,是否可以将表恢复为上一次数据。 问题答案: 还有另一种解决方案,如果服务器上有活动的二进制日志,则可以使用 用它生成一个sql文件 然后搜索您缺少的行。如果您没有激活它,则没有其他解决方案。下次进行备份。

  • 问题内容: 我已经开始执行以下代码 现在,我需要知道我刚刚开始的进程的pid。 问题答案: 由于Java 9类具有新方法long pid(),因此它很简单

  • 问题内容: 我只是运行了一个简单的MySQL CREATE TABLE语句,该语句产生了这一行 “查询确定,受影响的行为0,警告为1(0.07秒)。” 但是,它实际上并没有告诉我警告是什么。您如何查看刚刚发生的警告的内容?我正在使用MySQL 5.1,如果有帮助的话。我在网上唯一发现的是“ SHOW WARNINGS;但这只会产生 “空集(0.00秒)。” 问题答案: 是我知道的唯一方法,但是必须

  • 在解封XML时得到一个UnmarshalException(意外元素),我刚刚通过Marshaller运行了该元素。我看起来像是封送处理生成了XML,而XML无法解封。 以下UnmarshalException是由代码Unmarshaller.Unmarshal(reader)的最后一行引发的: 生成的XML如下所示: 为什么抛出UnmarshalException?