Как записывать логи в несколько файлов? - PullRequest
0 голосов
/ 09 октября 2018

В Golang, как вы, ребята, умеете записывать журналы в несколько файловых баз на имя пакета.

Например, в моем текущем приложении я пытаюсь собрать статистику нескольких аппаратных средств из разных пакетов, называемых Netapp, IBM и т. Д.но под тем же приложением.Итак, я хотел бы записать журналы из этого пакета в отдельную папку, например /var/log/myapp/netapp.log и /var/log/myapp/ibm.log?

Какой-нибудь указатель или подсказка были бы очень полезны?

Спасибо Джеймс

1 Ответ

0 голосов
/ 09 октября 2018

Один из подходов, который вы можете использовать, - реализовать шаблон Observer .Это отличный подход, когда вам нужно, чтобы несколько вещей происходили с одним и тем же вводом / событием.В вашем случае ведение одного и того же ввода в разных журналах.Вы можете найти более подробную информацию здесь .

В описанной вами ситуации и следуя этому примеру , вы можете выполнять следующие действия:

  1. Ваши разные реализации ведения журналов (с разными папками назначения ведения журналов) могут реализовать интерфейс Observer, поместив свой код ведения журнала для каждой реализации ведения журналов в методе OnNotify.
  2. Создайте экземпляр eventNotifier изарегистрируйте все свои реализации журналирования с помощью метода eventNotifier.Register.Что-то вроде:

      notifier := eventNotifier{
         observers: map[Observer]struct{}{},
      }
    
      notifier.Register(netAppLogger)
    
      notifier.Register(ibmLogger)
    
  3. Используйте eventNotifier.Notify всякий раз, когда и где вам нужно вести протоколирование, и оно будет использовать все зарегистрированные реализации ведения журналов.

...