@@ -33,6 +33,7 @@ import (
3333 "errors"
3434 "fmt"
3535 "io"
36+ "log/slog"
3637 "net/http"
3738 "os"
3839 "os/signal"
@@ -43,9 +44,6 @@ import (
4344 "syscall"
4445 "time"
4546 "unsafe"
46-
47- "go.uber.org/zap"
48- "go.uber.org/zap/zapcore"
4947 // debug on Linux
5048 //_ "github.com/ianlancetaylor/cgosymbolizer"
5149)
6664 isRunning bool
6765
6866 loggerMu sync.RWMutex
69- logger * zap .Logger
67+ logger * slog .Logger
7068
7169 metrics Metrics = nullMetrics {}
7270
@@ -234,10 +232,9 @@ func Init(options ...Option) error {
234232 }
235233
236234 if opt .logger == nil {
237- l , err := zap .NewDevelopment ()
238- if err != nil {
239- return err
240- }
235+ // set a default logger
236+ // to disable logging, set the logger to slog.New(slog.NewTextHandler(io.Discard, nil))
237+ l := slog .New (slog .NewTextHandler (os .Stdout , nil ))
241238
242239 loggerMu .Lock ()
243240 logger = l
@@ -294,13 +291,9 @@ func Init(options ...Option) error {
294291
295292 initAutoScaling (mainThread )
296293
297- if c := logger .Check (zapcore .InfoLevel , "FrankenPHP started 🐘" ); c != nil {
298- c .Write (zap .String ("php_version" , Version ().Version ), zap .Int ("num_threads" , mainThread .numThreads ), zap .Int ("max_threads" , mainThread .maxThreads ))
299- }
294+ logger .LogAttrs (nil , slog .LevelInfo , "FrankenPHP started 🐘" , slog .String ("php_version" , Version ().Version ), slog .Int ("num_threads" , mainThread .numThreads ), slog .Int ("max_threads" , mainThread .maxThreads ))
300295 if EmbeddedAppPath != "" {
301- if c := logger .Check (zapcore .InfoLevel , "embedded PHP app 📦" ); c != nil {
302- c .Write (zap .String ("path" , EmbeddedAppPath ))
303- }
296+ logger .LogAttrs (nil , slog .LevelInfo , "embedded PHP app 📦" , slog .String ("path" , EmbeddedAppPath ))
304297 }
305298
306299 return nil
@@ -435,9 +428,7 @@ func go_ub_write(threadIndex C.uintptr_t, cBuf *C.char, length C.int) (C.size_t,
435428
436429 i , e := writer .Write (unsafe .Slice ((* byte )(unsafe .Pointer (cBuf )), length ))
437430 if e != nil {
438- if c := fc .logger .Check (zapcore .ErrorLevel , "write error" ); c != nil {
439- c .Write (zap .Error (e ))
440- }
431+ fc .logger .LogAttrs (nil , slog .LevelError , "write error" , slog .Any ("error" , e ))
441432 }
442433
443434 if fc .responseWriter == nil {
@@ -456,9 +447,7 @@ func go_apache_request_headers(threadIndex C.uintptr_t) (*C.go_string, C.size_t)
456447 if fc .responseWriter == nil {
457448 // worker mode, not handling a request
458449
459- if c := logger .Check (zapcore .DebugLevel , "apache_request_headers() called in non-HTTP context" ); c != nil {
460- c .Write (zap .String ("worker" , fc .scriptFilename ))
461- }
450+ logger .LogAttrs (nil , slog .LevelDebug , "apache_request_headers() called in non-HTTP context" , slog .String ("worker" , fc .scriptFilename ))
462451
463452 return nil , 0
464453 }
@@ -489,9 +478,7 @@ func go_apache_request_headers(threadIndex C.uintptr_t) (*C.go_string, C.size_t)
489478func addHeader (fc * frankenPHPContext , cString * C.char , length C.int ) {
490479 parts := strings .SplitN (C .GoStringN (cString , length ), ": " , 2 )
491480 if len (parts ) != 2 {
492- if c := fc .logger .Check (zapcore .DebugLevel , "invalid header" ); c != nil {
493- c .Write (zap .String ("header" , parts [0 ]))
494- }
481+ fc .logger .LogAttrs (nil , slog .LevelDebug , "invalid header" , slog .String ("header" , parts [0 ]))
495482
496483 return
497484 }
@@ -545,9 +532,7 @@ func go_sapi_flush(threadIndex C.uintptr_t) bool {
545532 }
546533
547534 if err := http .NewResponseController (fc .responseWriter ).Flush (); err != nil {
548- if c := fc .logger .Check (zapcore .ErrorLevel , "the current responseWriter is not a flusher" ); c != nil {
549- c .Write (zap .Error (err ))
550- }
535+ logger .LogAttrs (nil , slog .LevelError , "the current responseWriter is not a flusher" , slog .Any ("error" , err ))
551536 }
552537
553538 return false
@@ -600,24 +585,15 @@ func go_log(message *C.char, level C.int) {
600585
601586 switch le {
602587 case emerg , alert , crit , err :
603- if c := logger .Check (zapcore .ErrorLevel , m ); c != nil {
604- c .Write (zap .Stringer ("syslog_level" , syslogLevel (level )))
605- }
588+ logger .LogAttrs (nil , slog .LevelError , m , slog .String ("syslog_level" , syslogLevel (level ).String ()))
606589
607590 case warning :
608- if c := logger .Check (zapcore .WarnLevel , m ); c != nil {
609- c .Write (zap .Stringer ("syslog_level" , syslogLevel (level )))
610- }
611-
591+ logger .LogAttrs (nil , slog .LevelWarn , m , slog .String ("syslog_level" , syslogLevel (level ).String ()))
612592 case debug :
613- if c := logger .Check (zapcore .DebugLevel , m ); c != nil {
614- c .Write (zap .Stringer ("syslog_level" , syslogLevel (level )))
615- }
593+ logger .LogAttrs (nil , slog .LevelDebug , m , slog .String ("syslog_level" , syslogLevel (level ).String ()))
616594
617595 default :
618- if c := logger .Check (zapcore .InfoLevel , m ); c != nil {
619- c .Write (zap .Stringer ("syslog_level" , syslogLevel (level )))
620- }
596+ logger .LogAttrs (nil , slog .LevelInfo , m , slog .String ("syslog_level" , syslogLevel (level ).String ()))
621597 }
622598}
623599
0 commit comments