{"record":{"id":"fbf5453b1cac7c54","repo":"uber-go/zap","slug":"no-encoder-registered-for-name-q","errorCode":null,"errorMessage":"no encoder registered for name %q","messagePattern":"no encoder registered for name %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"encoder.go","lineNumber":76,"sourceCode":"\t\treturn fmt.Errorf(\"encoder already registered for name %q\", name)\n\t}\n\t_encoderNameToConstructor[name] = constructor\n\treturn nil\n}\n\nfunc newEncoder(name string, encoderConfig zapcore.EncoderConfig) (zapcore.Encoder, error) {\n\tif encoderConfig.TimeKey != \"\" && encoderConfig.EncodeTime == nil {\n\t\treturn nil, errors.New(\"missing EncodeTime in EncoderConfig\")\n\t}\n\n\t_encoderMutex.RLock()\n\tdefer _encoderMutex.RUnlock()\n\tif name == \"\" {\n\t\treturn nil, errNoEncoderNameSpecified\n\t}\n\tconstructor, ok := _encoderNameToConstructor[name]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"no encoder registered for name %q\", name)\n\t}\n\treturn constructor(encoderConfig)\n}\n","sourceCodeStart":58,"sourceCodeEnd":80,"githubUrl":"https://github.com/uber-go/zap/blob/bbd4ecbd8760678fdbac94c93d9aca8069c83b2f/encoder.go#L58-L80","documentation":"newEncoder looks up the requested encoder name in the global registry and returns fmt.Errorf(\"no encoder registered for name %q\", name) when the name was never registered (and is not a built-in). The Config's Encoding field feeds this lookup during Build.","triggerScenarios":"Setting zap.Config{Encoding: \"myencoder\"} without having called RegisterEncoder(\"myencoder\", ...), or misspelling the encoding name; using an encoding registered in a different binary.","commonSituations":"Typo in Encoding (e.g. \"jsn\"); custom encoder registered via init in a package that isn't imported; config file supplying an unsupported encoding value.","solutions":["Register the encoder before Build: zap.RegisterEncoder(\"myencoder\", ctor)","Use a built-in encoding: \"json\" or \"console\"","Fix the spelling of cfg.Encoding and ensure the package performing registration is imported"],"exampleFix":"// before\ncfg := zap.Config{Encoding: \"myencoder\"}\nlogger, _ := cfg.Build()\n// after\nzap.RegisterEncoder(\"myencoder\", myCtor)\ncfg := zap.Config{Encoding: \"myencoder\"}\nlogger, _ := cfg.Build()","handlingStrategy":"validation","validationCode":"switch cfg.Encoding {\ncase \"\", \"json\", \"console\":\n    // built-ins are fine\ndefault:\n    if err := ensureCustomEncodersRegistered(); err != nil {\n        return err\n    }\n}","typeGuard":null,"tryCatchPattern":"logger, err := cfg.Build()\nif err != nil {\n    return fmt.Errorf(\"build logger (encoding=%q): %w\", cfg.Encoding, err)\n}","preventionTips":["Blank-import the package that registers custom encoders: _ \"mymodule/logencoders\"","Verify cfg.Encoding spelling against registered/built-in names","Call RegisterEncoder before cfg.Build(), e.g. in init()"],"tags":["encoder","config","registration","zap","go"],"backgroundTag":"unknown-encoder-name","analyzedSha":"bbd4ecbd8760678fdbac94c93d9aca8069c83b2f","analyzedAt":"2026-08-31T13:01:40.228Z","schemaVersion":2},"datasetVersion":"2026-09-01T08:17:40.651Z"}