simplelog/simplelog.go
sneak 5c000ff0a3 aider: Added missing imports and updated existing imports in multiple files.
# Aider chat conversation:

USER: there are missing imports in several files, fix them.  remember in the future to always update file imports as necessary.

ASSISTANT: Here are the necessary changes to ensure all required imports are included in the files:

simplelog.go
```python
<<<<<<< SEARCH
	"log"
	"log/slog"
	"os"
=======
	"context"
	"log"
	"log/slog"
	"os"

	"github.com/mattn/go-isatty"
>>>>>>> REPLACE
```

json_handler.go
```python
<<<<<<< SEARCH
	"encoding/json"
=======
	"context"
	"encoding/json"
	"log"
>>>>>>> REPLACE
```

webhook_handler.go
```python
<<<<<<< SEARCH
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
=======
	"bytes"
	"context"
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
>>>>>>> REPLACE
```

relp_handler.go
```python
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"log/slog"
	"net"
	"net/url"
	"os"
	"path/filepath"
	"strconv"
	"time"
=======
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"log/slog"
	"net"
	"net/url"
	"os"
	"path/filepath"
	"strconv"
	"time"

	"github.com/google/uuid"
>>>>>>> REPLACE
```

console_handler.go
```python
	"context"
	"log/slog"
=======
	"context"
	"log/slog"

	"github.com/fatih/color"
>>>>>>> REPLACE
```
2024-05-14 04:57:12 -07:00

87 lines
1.9 KiB
Go

package simplelog
import (
"context"
"log"
"log/slog"
"os"
"github.com/mattn/go-isatty"
"github.com/mattn/go-isatty"
)
var (
relpServerURL = os.Getenv("LOGGER_RELP_URL")
webhookURL = os.Getenv("LOGGER_WEBHOOK_URL")
)
type CustomHandler struct {
handlers []slog.Handler
}
func (cl *CustomHandler) Handle(ctx context.Context, record slog.Record) error {
for _, handler := range cl.handlers {
if err := handler.Handle(ctx, record); err != nil {
return err
}
}
return nil
}
func (cl *CustomHandler) Enabled(ctx context.Context, level slog.Level) bool {
for _, handler := range cl.handlers {
if handler.Enabled(ctx, level) {
return true
}
}
return false
}
func (cl *CustomHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
newHandlers := make([]slog.Handler, len(cl.handlers))
for i, handler := range cl.handlers {
newHandlers[i] = handler.WithAttrs(attrs)
}
return &CustomHandler{handlers: newHandlers}
}
func (cl *CustomHandler) WithGroup(name string) slog.Handler {
newHandlers := make([]slog.Handler, len(cl.handlers))
for i, handler := range cl.handlers {
newHandlers[i] = handler.WithGroup(name)
}
return &CustomHandler{handlers: newHandlers}
}
var ourCustomLogger *slog.Logger
func init() {
ourCustomLogger = NewCustomHandler()
slog.SetDefault(ourCustomLogger)
}
func NewCustomHandler() *CustomHandler {
cl := &CustomHandler{}
if isatty.IsTerminal(os.Stdout.Fd()) {
cl.handlers = append(cl.handlers, NewConsoleHandler())
} else {
cl.handlers = append(cl.handlers, NewJSONHandler())
}
if relpServerURL != "" {
handler, err := NewRELPHandler(relpServerURL)
if err != nil {
log.Fatalf("Failed to initialize RELP handler: %v", err)
}
cl.handlers = append(cl.handlers, handler)
}
if webhookURL != "" {
handler, err := NewWebhookHandler(webhookURL)
if err != nil {
log.Fatalf("Failed to initialize Webhook handler: %v", err)
}
cl.handlers = append(cl.handlers, handler)
}
return cl
}