Handle server close; Update logger

This commit is contained in:
Pijus Kamandulis 2025-01-15 00:23:54 +02:00
parent 8b8b087aab
commit 96d3a0a7ae
3 changed files with 32 additions and 12 deletions

View File

@ -103,7 +103,7 @@ func (s *ApiServer) Start() {
if s.config.DisableTls { if s.config.DisableTls {
logger.Infof("Listening and serving HTTP on %s\n", server.Addr) logger.Infof("Listening and serving HTTP on %s\n", server.Addr)
err := server.ListenAndServe() err := server.ListenAndServe()
if err != nil { if err != nil && err != http.ErrServerClosed {
logger.ErrorLn("Failed to start HTTP server:", err) logger.ErrorLn("Failed to start HTTP server:", err)
} }
s.isActive = false s.isActive = false
@ -112,7 +112,7 @@ func (s *ApiServer) Start() {
err := server.ListenAndServeTLS( err := server.ListenAndServeTLS(
s.config.TLS_CertificatePath, s.config.TLS_CertificatePath,
s.config.TLS_CertificateKey) s.config.TLS_CertificateKey)
if err != nil { if err != nil && err != http.ErrServerClosed {
logger.ErrorLn("Failed to start HTTPS server:", err) logger.ErrorLn("Failed to start HTTPS server:", err)
} }
s.isActive = false s.isActive = false
@ -122,7 +122,7 @@ func (s *ApiServer) Start() {
logger.Infof("Listening and serving HTTPS on %s\n", server.Addr) logger.Infof("Listening and serving HTTPS on %s\n", server.Addr)
err := server.ListenAndServeTLS("", "") err := server.ListenAndServeTLS("", "")
if err != nil { if err != nil && err != http.ErrServerClosed {
logger.ErrorLn("Failed to start HTTPS server:", err) logger.ErrorLn("Failed to start HTTPS server:", err)
} }
s.isActive = false s.isActive = false

View File

@ -1,8 +1,11 @@
package logger package logger
import ( import (
"fmt"
"log" "log"
"os" "os"
"runtime"
"strings"
) )
type LogLevelType int type LogLevelType int
@ -20,25 +23,28 @@ type LogWriter struct {
var LogLevel = LogLevelInfo var LogLevel = LogLevelInfo
var DebugLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime|log.Lshortfile) var DebugLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime)
var InfoLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime) var InfoLogger = log.New(os.Stdout, "", log.Ldate|log.Ltime)
var ErrorLogger = log.New(os.Stderr, "", log.Ldate|log.Ltime|log.Lshortfile) var ErrorLogger = log.New(os.Stderr, "", log.Ldate|log.Ltime)
func DebugLn(v ...any) { func DebugLn(v ...any) {
if LogLevel <= LogLevelDebug { if LogLevel <= LogLevelDebug {
DebugLogger.Println(v...) prefix := getCallerPrefix()
DebugLogger.Println(append([]interface{}{prefix}, v...)...)
} }
} }
func Debug(v ...any) { func Debug(v ...any) {
if LogLevel <= LogLevelDebug { if LogLevel <= LogLevelDebug {
DebugLogger.Print(v...) prefix := getCallerPrefix()
DebugLogger.Println(append([]interface{}{prefix}, v...)...)
} }
} }
func Debugf(format string, v ...any) { func Debugf(format string, v ...any) {
if LogLevel <= LogLevelDebug { if LogLevel <= LogLevelDebug {
DebugLogger.Printf(format, v...) prefix := getCallerPrefix()
DebugLogger.Printf(prefix+format, v...)
} }
} }
@ -62,19 +68,22 @@ func Infof(format string, v ...any) {
func ErrorLn(v ...any) { func ErrorLn(v ...any) {
if LogLevel <= LogLevelError { if LogLevel <= LogLevelError {
ErrorLogger.Println(v...) prefix := getCallerPrefix()
ErrorLogger.Println(append([]interface{}{prefix}, v...)...)
} }
} }
func Error(v ...any) { func Error(v ...any) {
if LogLevel <= LogLevelError { if LogLevel <= LogLevelError {
ErrorLogger.Print(v...) prefix := getCallerPrefix()
ErrorLogger.Print(append([]interface{}{prefix}, v...)...)
} }
} }
func Errorf(format string, v ...any) { func Errorf(format string, v ...any) {
if LogLevel <= LogLevelError { if LogLevel <= LogLevelError {
ErrorLogger.Printf(format, v...) prefix := getCallerPrefix()
ErrorLogger.Printf(prefix+format, v...)
} }
} }
@ -102,3 +111,14 @@ func InfoWriter() *LogWriter {
func DebugWriter() *LogWriter { func DebugWriter() *LogWriter {
return &LogWriter{WriterLevel: LogLevelDebug} return &LogWriter{WriterLevel: LogLevelDebug}
} }
func getCallerPrefix() string {
_, file, line, ok := runtime.Caller(2)
if ok {
parts := strings.Split(file, "/")
file = parts[len(parts)-1]
return fmt.Sprintf("%s:%d - ", file, line)
}
return ""
}

View File

@ -42,7 +42,7 @@ int test_ServerInstanceStateMethods()
return 0; return 0;
} }
const char *expected_state = "{\"databases\":{\"test-db\":{\"id\":\"test-db\",\"_ts\":0,\"_rid\":\"\",\"_etag\":\"\",\"_self\":\"\"}},\"collections\":{\"test-db\":{}},\"documents\":{\"test-db\":{}}}"; const char *expected_state = "{\"databases\":{\"test-db\":{\"id\":\"test-db\",\"_ts\":0,\"_rid\":\"\",\"_etag\":\"\",\"_self\":\"\"}},\"collections\":{\"test-db\":{}},\"documents\":{\"test-db\":{}},\"triggers\":{\"test-db\":{}},\"sprocs\":{\"test-db\":{}},\"udfs\":{\"test-db\":{}}}";
char *compact_state = compact_json(state); char *compact_state = compact_json(state);
if (!compact_state) if (!compact_state)
{ {