func (destination *streamDestination) flush() { msg := destination.copyAndResetBuffer() if len(msg) > 0 { switch destination.messageType { case events.LogMessage_OUT: logs.SendAppLog(destination.guid, string(msg), destination.sourceName, destination.sourceId) case events.LogMessage_ERR: logs.SendAppErrorLog(destination.guid, string(msg), destination.sourceName, destination.sourceId) } } }
func emitLogMessage(logger lager.Logger, perms *ssh.Permissions) { logMessageJson := perms.CriticalOptions["log-message"] if logMessageJson == "" { return } logMessage := &LogMessage{} err := json.Unmarshal([]byte(logMessageJson), logMessage) if err != nil { logger.Error("json-unmarshal-failed", err) return } logs.SendAppLog(logMessage.Guid, logMessage.Message, "SSH", strconv.Itoa(logMessage.Index)) }
func (x *FileAndLoggregatorAccessLogger) Run() { for { select { case record := <-x.channel: if x.writer != nil { record.WriteTo(x.writer) } if x.dropsondeSourceInstance != "" && record.ApplicationId() != "" { logs.SendAppLog(record.ApplicationId(), record.LogMessage(), "RTR", x.dropsondeSourceInstance) } case <-x.stopCh: return } } }
func (x *FileAndLoggregatorAccessLogger) Run() { for { select { case record := <-x.channel: if x.writer != nil { _, err := record.WriteTo(x.writer) if err != nil { x.logger.Error("Error when emiting access log to writers ", err) } } if x.dropsondeSourceInstance != "" && record.ApplicationId() != "" { logs.SendAppLog(record.ApplicationId(), record.LogMessage(), "RTR", x.dropsondeSourceInstance) } case <-x.stopCh: return } } }
etcdCleanup, etcdClientURL := integration_tests.SetupEtcd() defer etcdCleanup() metronCleanup, metronPort, metronReady := integration_tests.SetupMetron(etcdClientURL, "tcp") defer metronCleanup() dopplerCleanup, dopplerOutgoingPort := integration_tests.SetupDoppler(etcdClientURL, metronPort) defer dopplerCleanup() metronReady() err := dropsonde.Initialize(fmt.Sprintf("localhost:%d", metronPort), "test-origin") Expect(err).NotTo(HaveOccurred()) By("sending a message into metron") sent := make(chan struct{}) go func() { defer close(sent) err = logs.SendAppLog("test-app-id", "An event happened!", "test-app-id", "0") Expect(err).NotTo(HaveOccurred()) }() <-sent By("reading a message from doppler") Eventually(func() ([]byte, error) { wsURL := fmt.Sprintf("ws://localhost:%d/apps/test-app-id/recentlogs", dopplerOutgoingPort) c, _, err := websocket.DefaultDialer.Dial(wsURL, nil) if err != nil { return []byte{}, err } _, message, err := c.ReadMessage() if err != nil { return []byte{}, err }
"errors" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Logs", func() { var fakeLogSender *fake.FakeLogSender BeforeEach(func() { fakeLogSender = fake.NewFakeLogSender() logs.Initialize(fakeLogSender) }) It("delegates SendAppLog", func() { logs.SendAppLog("app-id", "custom-log-message", "App", "0") Expect(fakeLogSender.GetLogs()).To(HaveLen(1)) Expect(fakeLogSender.GetLogs()[0]).To(Equal(fake.Log{AppId: "app-id", Message: "custom-log-message", SourceType: "App", SourceInstance: "0", MessageType: "OUT"})) }) It("delegates SendAppErrorLog", func() { logs.SendAppErrorLog("app-id", "custom-log-error-message", "App", "0") Expect(fakeLogSender.GetLogs()).To(HaveLen(1)) Expect(fakeLogSender.GetLogs()[0]).To(Equal(fake.Log{AppId: "app-id", Message: "custom-log-error-message", SourceType: "App", SourceInstance: "0", MessageType: "ERR"})) }) Context("when errors occur", func() { BeforeEach(func() { fakeLogSender.ReturnError = errors.New("error occurred")