Skip to main content
Glama
logging.go1.24 kB
package logging import ( "github.com/itcaat/teamcity-mcp/internal/config" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) // New creates a new structured logger func New(cfg config.LoggingConfig) (*zap.SugaredLogger, error) { var zapConfig zap.Config if cfg.Format == "console" { zapConfig = zap.NewDevelopmentConfig() } else { zapConfig = zap.NewProductionConfig() } // Set log level level, err := zapcore.ParseLevel(cfg.Level) if err != nil { return nil, err } zapConfig.Level = zap.NewAtomicLevelAt(level) // Add correlation ID and trace context to logs zapConfig.InitialFields = map[string]interface{}{ "service": "teamcity-mcp", } logger, err := zapConfig.Build( zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel), ) if err != nil { return nil, err } return logger.Sugar(), nil } // WithRequestID adds a request ID to the logger context func WithRequestID(logger *zap.SugaredLogger, requestID string) *zap.SugaredLogger { return logger.With("request_id", requestID) } // WithTraceID adds OpenTelemetry trace information to the logger func WithTraceID(logger *zap.SugaredLogger, traceID, spanID string) *zap.SugaredLogger { return logger.With("trace_id", traceID, "span_id", spanID) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/itcaat/teamcity-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server