|
|
|
@ -35,6 +35,12 @@ const pollInterval = time.Second / 10
|
|
|
|
|
// which itself creates additional sockstat events.
|
|
|
|
|
const logInterval = 3 * time.Second
|
|
|
|
|
|
|
|
|
|
// maxLogFileSize specifies the maximum size of a log file before it is rotated.
|
|
|
|
|
// Our logs are fairly compact, and we are mostly only looking at a few hours of data.
|
|
|
|
|
// Combined with the fact that these are often uploaded over cellular connections,
|
|
|
|
|
// we keep this relatively small.
|
|
|
|
|
const maxLogFileSize = 5 << 20 // 5 MB
|
|
|
|
|
|
|
|
|
|
// Logger logs statistics about network sockets.
|
|
|
|
|
type Logger struct {
|
|
|
|
|
// enabled identifies whether the logger is enabled.
|
|
|
|
@ -95,7 +101,10 @@ func NewLogger(logdir string, logf logger.Logf, logID logid.PublicID) (*Logger,
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
filchPrefix := filepath.Join(logdir, "sockstats")
|
|
|
|
|
filch, err := filch.New(filchPrefix, filch.Options{ReplaceStderr: false})
|
|
|
|
|
filch, err := filch.New(filchPrefix, filch.Options{
|
|
|
|
|
MaxFileSize: maxLogFileSize,
|
|
|
|
|
ReplaceStderr: false,
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|