const dateLayout …
const maxTailLines …
const maxServiceLength …
const maxServices …
const nodeLogDir …
var journal …
var reServiceNameUnsafeCharacters …
type journalServer …
func (journalServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { … }
type nodeLogQuery …
type options …
func newNodeLogQuery(query url.Values) (*nodeLogQuery, field.ErrorList) { … }
func validateServices(services []string) field.ErrorList { … }
func (n *nodeLogQuery) validate() field.ErrorList { … }
func (n *nodeLogQuery) Copy(w io.Writer) { … }
func (n *nodeLogQuery) copyForBoot(ctx context.Context, w io.Writer, previousBoot int) { … }
func (n *nodeLogQuery) splitNativeVsFileLoggers(ctx context.Context) ([]string, []string) { … }
func (n *nodeLogQuery) copyServiceLogs(ctx context.Context, w io.Writer, services []string, previousBoot int) { … }
func copyFileLogs(ctx context.Context, w io.Writer, services []string) { … }
func heuristicsCopyFileLogs(ctx context.Context, w io.Writer, service string) { … }
type readerCtx …
func (r *readerCtx) Read(p []byte) (n int, err error) { … }
func newReaderCtx(ctx context.Context, r io.Reader) io.Reader { … }
func heuristicsCopyFileLog(ctx context.Context, w io.Writer, logFile string) error { … }
func safeServiceName(s string) error { … }