Sobes.tech
Junior — Senior
71

Возможные проблемы в реализации логгера

Companies where asked:

КасперскийКасперский
Task condition

Рассмотрим типичный пример создания простого логгера, записывающего сообщения в файл. Важно обратить внимание на потенциальные ошибки в реализации, такие как неверное управление ресурсами, отсутствие указателей в методах‑получателях и прочее.

type LogWriter interface {
    Log(message string) error
    Close() error
}

type DiskLogger struct{ outFile *os.File }

func NewDiskLogger(fileName string) (*DiskLogger, error) {
    f, err := os.Create(fileName)
    if err != nil {
        return nil, err
    }
    return &DiskLogger{f}, nil
}

func (dl DiskLogger) Log(message string) error {
    _, err := dl.outFile.WriteString(message + "\n")
    return err
}

func (dl DiskLogger) Close() error {
    return dl.outFile.Close()
}

В этом фрагменте кода можно обсудить, какие ошибки могут возникнуть при его использовании и как их исправить.