{"record":{"id":"fe15f955d3e060ae","repo":"sirupsen/logrus","slug":"cannot-create-hook-from-nil-logger","errorCode":null,"errorMessage":"cannot create hook from nil logger","messagePattern":"cannot create hook from nil logger","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"hooks/slog/slog.go","lineNumber":73,"sourceCode":"// [HookOptions.LevelMapper] to customize the mapping.\ntype Hook struct {\n\tlogger *slog.Logger\n\topts   HookOptions\n}\n\nvar _ logrus.Hook = (*Hook)(nil)\n\n// NewHook creates a [logrus.Hook] that sends logs to the provided [slog.Logger].\n//\n// This hook is intended to be used during transition from Logrus to slog,\n// or as a shim between different parts of your application or different\n// libraries that depend on different loggers.\n//\n// The provided logger must not be nil. NewHook panics if logger is nil.\n// If opts is nil, the default options are used.\nfunc NewHook(logger *slog.Logger, opts *HookOptions) *Hook {\n\tif logger == nil {\n\t\tpanic(\"cannot create hook from nil logger\")\n\t}\n\tif opts == nil {\n\t\topts = &HookOptions{}\n\t}\n\treturn &Hook{\n\t\tlogger: logger,\n\t\topts:   *opts,\n\t}\n}\n\n// toSlogLevel maps a Logrus level using LevelMapper or the default mapping.\nfunc (h *Hook) toSlogLevel(level logrus.Level) slog.Level {\n\tif h.opts.LevelMapper != nil {\n\t\treturn h.opts.LevelMapper(level)\n\t}\n\treturn Level(level).Level()\n}\n","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/sirupsen/logrus/blob/457e372460c7a80ca7c800b51ebeee5362aaa180/hooks/slog/slog.go#L55-L91","documentation":"Error \"cannot create hook from nil logger\" thrown in sirupsen/logrus.","triggerScenarios":"Thrown at hooks/slog/slog.go:73 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"457e372460c7a80ca7c800b51ebeee5362aaa180","analyzedAt":"2026-08-16T02:52:47.002Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}