()
| 131 | } |
| 132 | |
| 133 | func (cmd LogsCommand) streamLogs() error { |
| 134 | messages, logErrs, stopStreaming, warnings, err := cmd.Actor.GetStreamingLogsForApplicationByNameAndSpace( |
| 135 | cmd.RequiredArgs.AppName, |
| 136 | cmd.Config.TargetedSpace().GUID, |
| 137 | cmd.LogCacheClient, |
| 138 | ) |
| 139 | |
| 140 | cmd.UI.DisplayWarnings(warnings) |
| 141 | if err != nil { |
| 142 | return err |
| 143 | } |
| 144 | c := make(chan os.Signal, 1) |
| 145 | signal.Notify(c, os.Interrupt) |
| 146 | |
| 147 | defer stopStreaming() |
| 148 | var messagesClosed, errLogsClosed bool |
| 149 | for { |
| 150 | select { |
| 151 | case message, ok := <-messages: |
| 152 | if !ok { |
| 153 | messagesClosed = true |
| 154 | break |
| 155 | } |
| 156 | cmd.UI.DisplayLogMessage(message, true) |
| 157 | case logErr, ok := <-logErrs: |
| 158 | if !ok { |
| 159 | errLogsClosed = true |
| 160 | break |
| 161 | } |
| 162 | cmd.handleLogErr(logErr) |
| 163 | case <-c: |
| 164 | return nil |
| 165 | } |
| 166 | |
| 167 | if messagesClosed && errLogsClosed { |
| 168 | break |
| 169 | } |
| 170 | } |
| 171 | |
| 172 | return nil |
| 173 | } |
no test coverage detected