在Golang中,你们如何设法根据软件包名称将日志写入多个文件中。
例如,在我当前的应用程序中,我试图从名为Netapp,IBM等的不同软件包中收集同一硬件下的多个硬件统计信息。因此,我想将那些软件包中的日志写到/var/log/myapp/netapp.log和/var/log/myapp/ibm.log这样的单独文件夹中?
任何指针或线索会很有帮助吗?
感谢詹姆斯
答案 0 :(得分:1)
您可以采用的一种方法是实施观察者模式。当您需要在相同的输入/事件中进行多项操作时,这是一种很好的方法。在您的情况下,将相同的输入记录到不同的日志中。您可以找到更多信息here。
在您描述并遵循此example的情况下,您可以执行以下操作:
Observer
方法中来实现OnNotify
接口。创建eventNotifier
的实例,并使用eventNotifier.Register
方法注册所有日志记录实现。像这样:
notifier := eventNotifier{
observers: map[Observer]struct{}{},
}
notifier.Register(netAppLogger)
notifier.Register(ibmLogger)
在需要进行日志记录的任何时间和任何地方使用eventNotifier.Notify
,它将使用所有已注册的日志记录实现。