add monitoring #4
39
logger.go
39
logger.go
@@ -50,15 +50,12 @@ func InitLogger(config *Config) error {
|
|||||||
multiWriter := io.MultiWriter(os.Stdout, file)
|
multiWriter := io.MultiWriter(os.Stdout, file)
|
||||||
Logger.SetOutput(multiWriter)
|
Logger.SetOutput(multiWriter)
|
||||||
|
|
||||||
// Add default fields
|
// Log initialization with default fields
|
||||||
Logger = Logger.WithFields(logrus.Fields{
|
Logger.WithFields(logrus.Fields{
|
||||||
"service": "counter-app",
|
"service": "counter-app",
|
||||||
"environment": string(config.Environment),
|
"environment": string(config.Environment),
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
}).Logger
|
}).Info("Logger initialized successfully")
|
||||||
|
|
||||||
// Log initialization
|
|
||||||
Logger.Info("Logger initialized successfully")
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -75,18 +72,30 @@ func GetLogger() *logrus.Logger {
|
|||||||
return Logger
|
return Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetLoggerWithDefaults returns a logger entry with default fields
|
||||||
|
func GetLoggerWithDefaults(env Environment) *logrus.Entry {
|
||||||
|
return Logger.WithFields(logrus.Fields{
|
||||||
|
"service": "counter-app",
|
||||||
|
"environment": string(env),
|
||||||
|
"version": "1.0.0",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// LoggingMiddleware creates a Gin middleware for HTTP request logging
|
// LoggingMiddleware creates a Gin middleware for HTTP request logging
|
||||||
func LoggingMiddleware() gin.HandlerFunc {
|
func LoggingMiddleware(config *Config) gin.HandlerFunc {
|
||||||
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
|
return gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
|
||||||
// Create structured log entry
|
// Create structured log entry with default fields
|
||||||
entry := Logger.WithFields(logrus.Fields{
|
entry := Logger.WithFields(logrus.Fields{
|
||||||
"method": param.Method,
|
"service": "counter-app",
|
||||||
"path": param.Path,
|
"environment": string(config.Environment),
|
||||||
"status": param.StatusCode,
|
"version": "1.0.0",
|
||||||
"latency": param.Latency.String(),
|
"method": param.Method,
|
||||||
"client_ip": param.ClientIP,
|
"path": param.Path,
|
||||||
"user_agent": param.Request.UserAgent(),
|
"status": param.StatusCode,
|
||||||
"timestamp": param.TimeStamp.Format(time.RFC3339),
|
"latency": param.Latency.String(),
|
||||||
|
"client_ip": param.ClientIP,
|
||||||
|
"user_agent": param.Request.UserAgent(),
|
||||||
|
"timestamp": param.TimeStamp.Format(time.RFC3339),
|
||||||
})
|
})
|
||||||
|
|
||||||
// Set log level based on status code
|
// Set log level based on status code
|
||||||
|
|||||||
2
main.go
2
main.go
@@ -52,7 +52,7 @@ func main() {
|
|||||||
r.Use(MetricsMiddleware())
|
r.Use(MetricsMiddleware())
|
||||||
|
|
||||||
// Add logging middleware
|
// Add logging middleware
|
||||||
r.Use(LoggingMiddleware())
|
r.Use(LoggingMiddleware(config))
|
||||||
|
|
||||||
// Health check endpoint
|
// Health check endpoint
|
||||||
r.GET("/health", func(c *gin.Context) {
|
r.GET("/health", func(c *gin.Context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user