journald.go 840 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package containers
  2. import (
  3. "fmt"
  4. "github.com/coroot/coroot-node-agent/cgroup"
  5. "github.com/coroot/coroot-node-agent/logs"
  6. "github.com/coroot/coroot-node-agent/proc"
  7. "github.com/coroot/logparser"
  8. )
  9. var (
  10. journaldReader *logs.JournaldReader
  11. )
  12. func JournaldInit() error {
  13. r, err := logs.NewJournaldReader(
  14. proc.HostPath("/run/log/journal"),
  15. proc.HostPath("/var/log/journal"),
  16. )
  17. if err != nil {
  18. return err
  19. }
  20. journaldReader = r
  21. return nil
  22. }
  23. func JournaldSubscribe(cg *cgroup.Cgroup, ch chan<- logparser.LogEntry) error {
  24. if journaldReader == nil {
  25. return fmt.Errorf("journald reader not initialized")
  26. }
  27. err := journaldReader.Subscribe(cg.Id, ch)
  28. if err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. func JournaldUnsubscribe(cg *cgroup.Cgroup) {
  34. if journaldReader == nil {
  35. return
  36. }
  37. journaldReader.Unsubscribe(cg.Id)
  38. }