package logs

import (
	
	
	
	
)

// Writer implements [io.Writer] by logging each write as a single log record
// at the level specified when the [Writer] was created.
type Writer struct {
	logger Logger
	ctx    context.Context
	level  slog.Leveler
}

// NewLogLogger returns a [log.Logger] that writes to logger at the given
// level and context. It assumes a fixed call depth of 2, so it works only
// when Output is called from [log.Logger]’s log methods like Print or Println.
func ( context.Context,  slog.Leveler,  *Logger) *log.Logger {
	const  = 2 // skip [log.Logger.Output, log.Logger.Print]
	 := .WithSkipPC().Writer(, )
	return log.New(, "", 0)
}

// Writer returns a new [Writer] that logs each write to l at the given level
// and using the given context.
func ( *Logger) ( context.Context,  slog.Leveler) *Writer {
	return &Writer{
		logger: *,
		ctx:    ,
		level:  ,
	}
}

// Write logs buf as a single record. It returns len(buf), nil if the configured
// log level is not enabled.
func ( *Writer) ( []byte) (int, error) {
	 := .level.Level()
	if !.logger.Enabled(.ctx, ) {
		return len(), nil
	}
	 := string(bytes.TrimSuffix(, []byte{'\n'}))
	 := .logger.output(.ctx, , , nil)
	return len(), 
}