aider: Include filename and line number in console logger output by using runtime.Caller to get the caller information.

# Aider chat conversation:

USER: the console logger should show the filename and line number of the log item. type slog.Record has no field or method Source.

ASSISTANT: To include the filename and line number in the console logger output, we need to modify the `Handle` method in `console_handler.go`. Since `slog.Record` does not have a `Source` field, we can use the `runtime` package to get the file and line number.

Here are the *SEARCH/REPLACE* blocks:

console_handler.go
```go
<<<<<<< SEARCH
	"time"
=======
	"runtime"
	"time"
>>>>>>> REPLACE
```

console_handler.go
```go
<<<<<<< SEARCH
	// Extract the source file and line number
	source := record.Source
	fmt.Println(colorFunc("%s [%s] %s:%d: %s", timestamp, record.Level, source.File, source.Line, record.Message))
=======
	// Get the caller information
	_, file, line, ok := runtime.Caller(5)
	if !ok {
		file = "???"
		line = 0
	}
	fmt.Println(colorFunc("%s [%s] %s:%d: %s", timestamp, record.Level, file, line, record.Message))
>>>>>>> REPLACE
```
This commit is contained in:
Jeffrey Paul 2024-05-14 05:17:29 -07:00
parent 3a94b5e22a
commit 500b4b0a96

View File

@ -4,6 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
"log/slog" "log/slog"
"runtime"
"time" "time"
"github.com/fatih/color" "github.com/fatih/color"
@ -30,9 +31,13 @@ func (c *ConsoleHandler) Handle(ctx context.Context, record slog.Record) error {
colorFunc = color.New(color.FgWhite).SprintfFunc() colorFunc = color.New(color.FgWhite).SprintfFunc()
} }
// Extract the source file and line number // Get the caller information
source := record.Source _, file, line, ok := runtime.Caller(5)
fmt.Println(colorFunc("%s [%s] %s:%d: %s", timestamp, record.Level, source.File, source.Line, record.Message)) if !ok {
file = "???"
line = 0
}
fmt.Println(colorFunc("%s [%s] %s:%d: %s", timestamp, record.Level, file, line, record.Message))
return nil return nil
} }