mirror of
https://github.com/yusing/godoxy.git
synced 2026-02-24 17:54:57 +01:00
Major refactoring of the access logging infrastructure to improve code organization and add proper console/stdout logging support. - Renamed `Writer` interface to `File` and consolidated with `SupportRotate` - Renamed `Log(req, res)` to `LogRequest(req, res)` for clarity - Added new `ConsoleLogger` with zerolog console writer for formatted stdout output - Moved type definitions to new `types.go` file - Changed buffer handling from `[]byte` returns to `*bytes.Buffer` parameters - Renamed internal files for clarity (`access_logger.go` → `file_access_logger.go`) - Fixed fileserver access logging timing: moved logging after handler execution with defer - Correct response handling in Fileserver - Remove deprecated field `buffer_size` - Simplify and removed unnecessary code All callers have been updated to use the new APIs.
63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
package accesslog
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
|
|
"github.com/spf13/afero"
|
|
)
|
|
|
|
type MockFile struct {
|
|
afero.File
|
|
|
|
buffered bool
|
|
}
|
|
|
|
var _ File = (*MockFile)(nil)
|
|
|
|
func NewMockFile(buffered bool) *MockFile {
|
|
f, _ := afero.TempFile(afero.NewMemMapFs(), "", "")
|
|
f.Seek(0, io.SeekEnd)
|
|
return &MockFile{
|
|
File: f,
|
|
buffered: buffered,
|
|
}
|
|
}
|
|
|
|
func (m *MockFile) ShouldBeBuffered() bool {
|
|
return m.buffered
|
|
}
|
|
|
|
func (m *MockFile) Len() int64 {
|
|
filesize, _ := m.Seek(0, io.SeekEnd)
|
|
_, _ = m.Seek(0, io.SeekStart)
|
|
return filesize
|
|
}
|
|
|
|
func (m *MockFile) Content() []byte {
|
|
buf := bytes.NewBuffer(nil)
|
|
m.Seek(0, io.SeekStart)
|
|
_, _ = buf.ReadFrom(m.File)
|
|
m.Seek(0, io.SeekStart)
|
|
return buf.Bytes()
|
|
}
|
|
|
|
func (m *MockFile) NumLines() int {
|
|
content := m.Content()
|
|
count := bytes.Count(content, []byte("\n"))
|
|
// account for last line if it does not end with a newline
|
|
if len(content) > 0 && content[len(content)-1] != '\n' {
|
|
count++
|
|
}
|
|
return count
|
|
}
|
|
|
|
func (m *MockFile) MustSize() int64 {
|
|
stat, _ := m.Stat()
|
|
return stat.Size()
|
|
}
|
|
|
|
func (m *MockFile) Close() error {
|
|
return nil
|
|
}
|