{"record":{"id":"36699910c9679d02","repo":"netbirdio/netbird","slug":"failed-to-set-log-level-v","errorCode":null,"errorMessage":"failed to set log level: %v","messagePattern":"failed to set log level: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"client/cmd/debug.go","lineNumber":225,"sourceCode":"\t}\n\tdefer func() {\n\t\tif err := conn.Close(); err != nil {\n\t\t\tlog.Errorf(errCloseConnection, err)\n\t\t}\n\t}()\n\n\tclient := proto.NewDaemonServiceClient(conn)\n\tlevel := server.ParseLogLevel(args[0])\n\tif level == proto.LogLevel_UNKNOWN {\n\t\t//nolint\n\t\treturn fmt.Errorf(\"unknown log level: %s. Available levels are: panic, fatal, error, warn, info, debug, trace\\n\", args[0])\n\t}\n\n\t_, err = client.SetLogLevel(cmd.Context(), &proto.SetLogLevelRequest{\n\t\tLevel: level,\n\t})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to set log level: %v\", status.Convert(err).Message())\n\t}\n\n\tcmd.Println(\"Log level set successfully to\", args[0])\n\treturn nil\n}\n\nfunc runForDuration(cmd *cobra.Command, args []string) error {\n\tduration, err := time.ParseDuration(args[0])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid duration format: %v\", err)\n\t}\n\n\tanonymizeEnabled, anonymizeLevel, err := effectiveAnonymize()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tconn, err := getClient(cmd)","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/netbirdio/netbird/blob/93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c/client/cmd/debug.go#L207-L243","documentation":"The SetLogLevel RPC to the daemon failed; the CLI prints only status.Convert(err).Message(), so the text is the daemon-side or transport message with the gRPC envelope stripped. Typical causes mirror other daemon RPCs: service stopped, IPC socket unreachable, permission on the socket, or the daemon rejecting the request internally.","triggerScenarios":"Daemon not running (service stopped/failed) when netbird debug log-level runs; calling user denied access to the daemon IPC socket; daemon mid-restart or crashed; version mismatch between CLI and daemon for this RPC.","commonSituations":"Changing log level right after boot before the service is up; running under sudo vs not, hitting socket permissions; containers where the CLI is run outside the daemon's IPC namespace; post-upgrade while the daemon restarts.","solutions":["Confirm the daemon is running (systemctl status netbird / service control) and restart it if it has failed, then retry","Run with the same privileges/user used for other working netbird commands (socket access is user-scoped)","Check the daemon log for the matching timestamp — if it received the RPC, its log holds the real failure","Align CLI and daemon versions after upgrades (netbird version, daemon banner)"],"exampleFix":"# before\nsudo systemctl stop netbird && netbird debug log-level debug\n# -> failed to set log level: ...\n\n# after\nsudo systemctl start netbird && netbird debug log-level debug","handlingStrategy":"retry","validationCode":"// Cheap health probe before the real call:\nif _, err := proto.NewDaemonServiceClient(conn).Status(ctx, &proto.EmptyRequest{}); err != nil {\n    return fmt.Errorf(\"daemon not responding: %v\", status.Convert(err).Message())\n}","typeGuard":null,"tryCatchPattern":"// Retry once after a short delay for restart races:\n_, err = client.SetLogLevel(ctx, &proto.SetLogLevelRequest{Level: level})\nif err != nil {\n    time.Sleep(2 * time.Second)\n    _, err = client.SetLogLevel(ctx, &proto.SetLogLevelRequest{Level: level})\n}\nif err != nil {\n    return fmt.Errorf(\"failed to set log level: %v\", status.Convert(err).Message())\n}","preventionTips":["Script service-start with a readiness wait before log-level changes","Run daemon RPCs as the user that owns the IPC socket","After package upgrades, restart the daemon before changing its log level"],"tags":["grpc","daemon","logging","cli","service"],"backgroundTag":null,"analyzedSha":"93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c","analyzedAt":"2026-08-16T03:09:19.136Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}