package proxyserver import ( "os" "path/filepath" "albedo/cli/internal/config" ) // RequestLog replaces older request lines once proxy.log reaches 8 MiB. // log.Logger serializes calls to Write. type RequestLog struct{ *os.File } func OpenLog() (*RequestLog, error) { file, err := os.OpenFile(filepath.Join(config.HomeDir(), "proxy.log"), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o600) if err != nil { return nil, err } return &RequestLog{file}, nil } func (l *RequestLog) Write(data []byte) (int, error) { info, err := l.Stat() if err != nil { return 0, err } if info.Size()+int64(len(data)) > 8<<20 { if err := l.Truncate(0); err != nil { return 0, err } } return l.File.Write(data) }