1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
package core
import "time"
const (
// MaxNumLinesDefault is a default for QueryLogsParams.MaxNumLines below.
MaxNumLinesDefault = 250
)
type QueryLogsParams struct {
// maxNumLines is how many log lines the nerdlog_agent.sh will return at
// most.
MaxNumLines int
From time.Time
To time.Time
Query string
// If LoadEarlier is true, it means we're only loading the logs _before_ the ones
// we already had.
LoadEarlier bool
// If DontAddHistoryItem is true, the browser-like history will not be
// populated with a new item (it should be used exactly when we're navigating
// this browser-like history back and forth)
DontAddHistoryItem bool
// If RefreshIndex is true, we'll drop the index file for all logstreams, and
// rebuild it from scratch (no-op for journalctl logstreams, because there's
// no nerdlog-maintained index for journalctl).
RefreshIndex bool
}
// LogResp is a log response from a single logstream
type LogResp struct {
// MinuteStats is a map from the unix timestamp (in seconds) to the stats for
// the minute starting at this timestamp.
MinuteStats map[int64]MinuteStatsItem
Logs []LogMsg
// NumMsgsTotal is the total number of messages in the time range (and
// included in MinuteStats). This number is usually larger than len(Logs).
NumMsgsTotal int
// DebugInfo contains info collected during this particular query.
DebugInfo LogstreamDebugInfo
}
type LogstreamDebugInfo struct {
// AgentStdout and AgentStderr contain arbitrary human-readable debugging
// info printed by the agent script.
AgentStdout []string
AgentStderr []string
}
// LogRespTotal is a log response from a LStreamsManager. It's merged from
// multiple LogResp's and it also contains some extra field(s), e.g. LoadedEarlier.
type LogRespTotal struct {
// If LoadedEarlier is true, it means we've just loaded more logs instead of replacing
// the logs (the Logs slice still contains everything though).
LoadedEarlier bool
// MinuteStats is a map from the unix timestamp (in seconds) to the stats for
// the minute starting at this timestamp.
MinuteStats map[int64]MinuteStatsItem
Logs []LogMsg
// NumMsgsTotal is the total number of messages in the time range (and
// included in MinuteStats). This number is usually larger than len(Logs).
NumMsgsTotal int
Errs []error
// DebugInfo is a map from the logstream name to the corresponding debug info
// collected during this particular query.
DebugInfo map[string]LogstreamDebugInfo
// QueryDur shows how long the query took.
QueryDur time.Duration
}
type MinuteStatsItem struct {
NumMsgs int
}
type LogMsg struct {
Time time.Time
DecreasedTimestamp bool
// LogFilename and LogLinenumber are file ane line number in that file
LogFilename string
LogLinenumber int
// CombinedLinenumber is the line number in pseudo-file: all (actually just
// two) log files concatenated. This is the linenumbers output by the
// nerdlog_agent.sh for every "msg:" line, and this is the linenumber
// which should be used for --lines-until param.
CombinedLinenumber int
Msg string
Context map[string]string
Level LogLevel
OrigLine string
}
type LogLevel string
const LogLevelUnknown LogLevel = ""
const LogLevelDebug LogLevel = "debug"
const LogLevelInfo LogLevel = "info"
const LogLevelWarn LogLevel = "warn"
const LogLevelError LogLevel = "error"
|