Initial add backend stuff
This commit is contained in:
41
l4g/database.go
Normal file
41
l4g/database.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package l4g
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
// dbWriter is the app-supplied sink that persists a log Entry to the database.
|
||||
// The framework cannot import the app's repository, so the app registers a
|
||||
// writer at startup via SetDatabaseWriter. If none is registered, the database
|
||||
// logger falls back to the terminal so log lines are never silently dropped.
|
||||
var dbWriter func(Entry) error
|
||||
|
||||
// SetDatabaseWriter registers the function the database logger uses to persist
|
||||
// entries. Apps typically wire it to their repository:
|
||||
//
|
||||
// l4g.SetDatabaseWriter(func(e l4g.Entry) error {
|
||||
// return repository.InsertLogEntry(context.Background(), models.LogEntry(e))
|
||||
// })
|
||||
func SetDatabaseWriter(w func(Entry) error) { dbWriter = w }
|
||||
|
||||
type DatabaseLogger struct{}
|
||||
|
||||
func NewDatabaseLogger() *DatabaseLogger {
|
||||
return &DatabaseLogger{}
|
||||
}
|
||||
|
||||
func (d *DatabaseLogger) Write(entry Entry) error {
|
||||
if dbWriter == nil {
|
||||
return NewTerminalLogger().Write(entry)
|
||||
}
|
||||
return dbWriter(entry)
|
||||
}
|
||||
|
||||
func (d *DatabaseLogger) Fatal(entry Entry) error {
|
||||
err := d.Write(entry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
os.Exit(1)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user