go - 如何将日志写入多个文件?
问题描述
在 Golang 中,你们如何根据包名将日志写入多个文件。
例如,在我当前的应用程序中,我试图从名为 Netapp、IBM 等但在同一个应用程序下的不同包中收集多个硬件统计信息。因此,我想将这些包中的日志写入单独的文件夹中,例如 /var/log/myapp/netapp.log 和 /var/log/myapp/ibm.log?
任何指针或线索会很有帮助吗?
谢谢詹姆斯
解决方案
您可以采取的一种方法是实现观察者模式。当您需要使用相同的输入/事件发生几件事时,这是一种很好的方法。在您的情况下,将相同的输入记录到不同的日志中。您可以在此处找到更多信息。
在您描述并遵循此示例的情况下,您可以执行以下操作:
- 您的不同日志实现(具有不同的日志目标文件夹)可以
Observer
通过将每个日志实现的日志代码放入OnNotify
方法中来实现接口。 创建一个实例
eventNotifier
并使用方法注册所有日志记录实现eventNotifier.Register
。就像是:notifier := eventNotifier{ observers: map[Observer]struct{}{}, } notifier.Register(netAppLogger) notifier.Register(ibmLogger)
eventNotifier.Notify
随时随地使用您需要进行日志记录,它将使用所有已注册的日志记录实现。
推荐阅读
- javascript - 在对象的父数组中查找唯一对象
- c++ - std::optional 如何在幕后工作?
- mysql - Java JPA:无法找到 2 个 LocalDates 之间的所有记录
- pytorch - CoreML 中的潜在向量方差比 PyTorch 大得多
- shell - zsh `getopts` OPTIND 行为与其他 shell(bash、sh)不一致
- c# - 计时器会话结束时使表单上的按钮不可见
- python - 初学者python和montecarlo
- php - 在基于 Zend Framework 的站点中重定向单个 url
- python-3.x - 为什么我无法在 Pandas 中使用 na_values?
- azure - 如何在 Azure 资源管理器模板中为 Azure 函数配置应用服务托管证书?