如何将日志写入多个文件?

时间:2018-10-08 23:55:36

标签: go logging

在Golang中,你们如何设法根据软件包名称将日志写入多个文件中。

例如,在我当前的应用程序中,我试图从名为Netapp,IBM等的不同软件包中收集同一硬件下的多个硬件统计信息。因此,我想将那些软件包中的日志写到/var/log/myapp/netapp.log和/var/log/myapp/ibm.log这样的单独文件夹中?

任何指针或线索会很有帮助吗?

感谢詹姆斯

1 个答案:

答案 0 :(得分:1)

您可以采用的一种方法是实施观察者模式。当您需要在相同的输入/事件中进行多项操作时,这是一种很好的方法。在您的情况下,将相同的输入记录到不同的日志中。您可以找到更多信息here

在您描述并遵循此example的情况下,您可以执行以下操作:

  1. 您的不同日志记录实现(具有不同的日志记录目标文件夹)可以通过将每种日志记录实现的日志记录代码置于Observer方法中来实现OnNotify接口。
  2. 创建eventNotifier的实例,并使用eventNotifier.Register方法注册所有日志记录实现。像这样:

      notifier := eventNotifier{
         observers: map[Observer]struct{}{},
      }
    
      notifier.Register(netAppLogger)
    
      notifier.Register(ibmLogger)
    
  3. 在需要进行日志记录的任何时间和任何地方使用eventNotifier.Notify,它将使用所有已注册的日志记录实现。