当前位置: 首页 > 面试题库 >

寻找用于记录的呼叫或线程ID

阎自怡
2023-03-14
问题内容

我正在重新整理用golang编写的小型Web应用程序的日志记录。由于外部需求,日志记录已被隔离在一个地方,因此我们以后可能会切换到 日志记录服务器
。(不是我的主意-
我保证…。)尽管如此,我们现在基本上可以使用标准库的一部分以及我们正在传递的用户/会话结构来记录日期/时间,行号,用户和消息等常见信息周围。

但是-随之而来的问题是-
在较低级别的方法中,仅为了获取日志而仅为了获取用户名而在会话中传递是浪费的。因此,我想找到其他可用于在日志文件中找到一个特定请求的东西。我敢肯定,有些明显的东西我还没想到。

到目前为止的想法:

  • Java日志记录框架可以打印出线程ID,在这种情况下也足够了。只是在golang中被称为其他东西?
  • 使用户/会话结构事物在某种程度上可以全局访问。(除非有线程可以用作查找关键字,否则仍然需要传递会话ID。回到想法1。)
  • 无论如何都要放弃并传递用户/会话结构。
  • 仅在用户/会话结构可用时才记录最低级别的错误。行号不会那么好。

我们将大猩猩的一部分用于网络事物,除此之外,大部分都是标准库。

关于此的建议和想法?


问题答案:

由于滥用的可能性很高,因此无法访问Go中当前goroutine的标识符。这可能看起来很苛刻,但这实际上保留了Go软件包生态系统的重要属性:
启动新的goroutine做某事并不重要

也就是说,对于函数F的任何方法:

F()

几乎完全等同于:

done := make(chan struct{})
go func() {
   defer close(done)
   F()
}
<-done

(“几乎”来自以下事实:如果F发生恐慌,那么原始goroutine将不会抓住该恐慌)。

这也适用于日志记录-
如果您正在使用当前goroutine来推断当前用户,则如上所述启动任何新goroutine的任何代码都会破坏该假设,并且您的日志记录将不包含预期的信息。

您需要传递某种上下文。



 类似资料:
  • 使用AudioSource VOICE_UPLINK和Voice_Downlink成功录制的任何一个呼叫。 还有一个问题:-当音频源VOICE_CALL不工作时,它有什么用? 谢谢你。

  • 我已经开发了一个用于WebRTC视频呼叫的android应用程序,运行良好。现在的要求是记录通话音频并将其存储在外部存储器中。我尝试过MedieRecorder,它正在录制音频并存储,但这里面临一个问题。当我开始录制音频时,声音在接收器一侧停止。Media Recorder不允许webrtc使用麦克风。 我尝试了以下代码。 我也尝试过“录音机”音频源(媒体记录器,音频源.MIC);录音机音频源(M

  • 更新:任何人都知道如何强迫另一个流到麦克风音频源。这需要原生android代码。请在这方面帮助我,请参考这个问题,以获得更多关于路由音频的详细信息

  • 您可以使用Ember数据存储检索记录,该数据存储使用存储对象的内置方法根据参数查找记录。 可以使用以下方法检索给定类型的记录 - store.findAll() 语法 (Syntax) import Ember from 'ember'; export default Ember.Route.extend ({ model() { return this.store.findA

  • 如何获得呼叫的位置?不是全部地点,只是一个地区?也许android有一些API?未找到内容解析程序和Calllog.calls.content_uri

  • 但是上行和下行都不起作用 当我使用上行链路或下行链路时,我的应用程序行为不端,而当我使用其他来源时,我的应用程序工作正常