[{"data":1,"prerenderedAt":526},["ShallowReactive",2],{"doc:\u002Fguides\u002Flogging":3,"nav:guides":476},{"doc":4,"source":475},{"id":5,"title":6,"body":7,"description":468,"extension":469,"meta":470,"navigation":149,"path":471,"seo":472,"stem":473,"__hash__":474},"guides\u002Fguides\u002Flogging.md","Logging",{"type":8,"value":9,"toc":464},"minimark",[10,14,27,372,378,383,422,426,433,450,460],[11,12,6],"h1",{"id":13},"logging",[15,16,17,18,22,23,26],"p",{},"Pkl sends log messages while it evaluates: the output of ",[19,20,21],"code",{},"trace()"," and warnings such as uses of deprecated members. zig-pkl passes each one to a ",[19,24,25],{},"Logger",".",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-zig shiki shiki-themes github-light github-dark","const PrintLogger = struct {\n    fn logger(self: *PrintLogger) zig_pkl.Logger {\n        return .{ .ptr = self, .vtable = &.{ .log = log } };\n    }\n\n    fn log(_: *anyopaque, event: zig_pkl.logger.Event) void {\n        const level = if (event.level == 0) \"trace\" else \"warn\";\n        std.debug.print(\"[{s}] {s} ({s})\\n\", .{ level, event.message, event.frame_uri });\n    }\n};\n\nvar print_logger = PrintLogger{};\nvar options = zig_pkl.Options.restricted();\noptions.logger = print_logger.logger();\n","zig","",[19,35,36,59,96,138,144,151,195,241,294,299,305,310,326,352],{"__ignoreMap":33},[37,38,41,45,49,52,55],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"szBVR","const",[37,46,48],{"class":47},"s4XuR"," PrintLogger",[37,50,51],{"class":43}," =",[37,53,54],{"class":43}," struct",[37,56,58],{"class":57},"sVt8B"," {\n",[37,60,62,65,69,72,75,78,81,84,87,90,92,94],{"class":39,"line":61},2,[37,63,64],{"class":43},"    fn",[37,66,68],{"class":67},"sScJk"," logger",[37,70,71],{"class":57},"(",[37,73,74],{"class":47},"self",[37,76,77],{"class":57},": ",[37,79,80],{"class":43},"*",[37,82,83],{"class":47},"PrintLogger",[37,85,86],{"class":57},") ",[37,88,89],{"class":47},"zig_pkl",[37,91,26],{"class":57},[37,93,25],{"class":47},[37,95,58],{"class":57},[37,97,99,102,105,108,110,113,116,119,121,124,127,130,132,135],{"class":39,"line":98},3,[37,100,101],{"class":43},"        return",[37,103,104],{"class":57}," .{ .",[37,106,107],{"class":47},"ptr",[37,109,51],{"class":43},[37,111,112],{"class":47}," self",[37,114,115],{"class":57},", .",[37,117,118],{"class":47},"vtable",[37,120,51],{"class":43},[37,122,123],{"class":43}," &",[37,125,126],{"class":57},".{ .",[37,128,129],{"class":47},"log",[37,131,51],{"class":43},[37,133,134],{"class":47}," log",[37,136,137],{"class":57}," } };\n",[37,139,141],{"class":39,"line":140},4,[37,142,143],{"class":57},"    }\n",[37,145,147],{"class":39,"line":146},5,[37,148,150],{"emptyLinePlaceholder":149},true,"\n",[37,152,154,156,158,160,163,165,168,171,174,176,178,180,183,185,188,190,193],{"class":39,"line":153},6,[37,155,64],{"class":43},[37,157,134],{"class":67},[37,159,71],{"class":57},[37,161,162],{"class":47},"_",[37,164,77],{"class":57},[37,166,167],{"class":43},"*anyopaque",[37,169,170],{"class":57},", ",[37,172,173],{"class":47},"event",[37,175,77],{"class":57},[37,177,89],{"class":47},[37,179,26],{"class":57},[37,181,182],{"class":47},"logger",[37,184,26],{"class":57},[37,186,187],{"class":47},"Event",[37,189,86],{"class":57},[37,191,192],{"class":43},"void",[37,194,58],{"class":57},[37,196,198,201,204,206,209,212,214,216,219,222,226,228,232,235,238],{"class":39,"line":197},7,[37,199,200],{"class":43},"        const",[37,202,203],{"class":47}," level",[37,205,51],{"class":43},[37,207,208],{"class":43}," if",[37,210,211],{"class":57}," (",[37,213,173],{"class":47},[37,215,26],{"class":57},[37,217,218],{"class":47},"level",[37,220,221],{"class":43}," ==",[37,223,225],{"class":224},"sj4cs"," 0",[37,227,86],{"class":57},[37,229,231],{"class":230},"sZZnC","\"trace\"",[37,233,234],{"class":43}," else",[37,236,237],{"class":230}," \"warn\"",[37,239,240],{"class":57},";\n",[37,242,244,247,249,252,254,257,259,262,265,268,271,273,275,277,279,282,284,286,288,291],{"class":39,"line":243},8,[37,245,246],{"class":47},"        std",[37,248,26],{"class":57},[37,250,251],{"class":47},"debug",[37,253,26],{"class":57},[37,255,256],{"class":67},"print",[37,258,71],{"class":57},[37,260,261],{"class":230},"\"[{s}] {s} ({s})",[37,263,264],{"class":224},"\\n",[37,266,267],{"class":230},"\"",[37,269,270],{"class":57},", .{ ",[37,272,218],{"class":47},[37,274,170],{"class":57},[37,276,173],{"class":47},[37,278,26],{"class":57},[37,280,281],{"class":47},"message",[37,283,170],{"class":57},[37,285,173],{"class":47},[37,287,26],{"class":57},[37,289,290],{"class":47},"frame_uri",[37,292,293],{"class":57}," });\n",[37,295,297],{"class":39,"line":296},9,[37,298,143],{"class":57},[37,300,302],{"class":39,"line":301},10,[37,303,304],{"class":57},"};\n",[37,306,308],{"class":39,"line":307},11,[37,309,150],{"emptyLinePlaceholder":149},[37,311,313,316,319,321,323],{"class":39,"line":312},12,[37,314,315],{"class":43},"var",[37,317,318],{"class":47}," print_logger",[37,320,51],{"class":43},[37,322,48],{"class":47},[37,324,325],{"class":57},"{};\n",[37,327,329,331,334,336,339,341,344,346,349],{"class":39,"line":328},13,[37,330,315],{"class":43},[37,332,333],{"class":47}," options",[37,335,51],{"class":43},[37,337,338],{"class":47}," zig_pkl",[37,340,26],{"class":57},[37,342,343],{"class":47},"Options",[37,345,26],{"class":57},[37,347,348],{"class":67},"restricted",[37,350,351],{"class":57},"();\n",[37,353,355,358,360,362,364,366,368,370],{"class":39,"line":354},14,[37,356,357],{"class":47},"options",[37,359,26],{"class":57},[37,361,182],{"class":47},[37,363,51],{"class":43},[37,365,318],{"class":47},[37,367,26],{"class":57},[37,369,182],{"class":67},[37,371,351],{"class":57},[15,373,374,375,377],{},"An ",[19,376,187],{}," carries the evaluator id, the level (0 for trace, 1 for warn), the message, and the URI of the frame that logged it. The slices are valid only during the call, so copy what you keep.",[379,380,382],"h2",{"id":381},"where-messages-go","Where messages go",[384,385,386,393,400],"ul",{},[387,388,389,392],"li",{},[19,390,391],{},"Options.logger"," receives messages for evaluators created with those options.",[387,394,395,396,399],{},"The logger passed to ",[19,397,398],{},"Manager.init"," receives messages for evaluators without their own logger.",[387,401,402,405,406,409,410,413,414,417,418,421],{},[19,403,404],{},"Logger.noop"," drops messages, ",[19,407,408],{},"logger.Stderr.logger()"," writes them through ",[19,411,412],{},"std.log"," with the ",[19,415,416],{},"pkl"," scope, and ",[19,419,420],{},"logger.Capture"," keeps the most recent message for tests.",[379,423,425],{"id":424},"threads","Threads",[15,427,428,429,432],{},"Loggers run on the manager's response thread. A slow logger delays every response on the manager, so hand expensive work to another thread. ",[19,430,431],{},"Evaluator.close"," waits for that evaluator's logger calls to return.",[15,434,435,438,439,442,443,446,447,449],{},[19,436,437],{},"Options.trace_mode"," (Pkl 0.30 and newer) chooses between ",[19,440,441],{},".compact"," and ",[19,444,445],{},".pretty"," formatting of ",[19,448,21],{}," output.",[15,451,452,453,26],{},"See ",[454,455,457],"a",{"href":456},"..\u002F..\u002Fexamples\u002Ferrors\u002Fmain.zig",[19,458,459],{},"examples\u002Ferrors",[461,462,463],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":33,"searchDepth":61,"depth":61,"links":465},[466,467],{"id":381,"depth":61,"text":382},{"id":424,"depth":61,"text":425},"Pkl sends log messages while it evaluates: the output of trace() and warnings such as uses of deprecated members. zig-pkl passes each one to a Logger.","md",{},"\u002Fguides\u002Flogging",{"title":6,"description":468},"guides\u002Flogging","LzRk-dMQkKKWIdpaYqa3EUw1TI8b6808aU-qfYNXpEk","docs\u002Fguides\u002Flogging.md",[477,481,485,489,493,497,501,502,506,510,514,518,522],{"title":478,"path":479,"stem":480},"Version compatibility","\u002Fguides\u002Fcompatibility","guides\u002Fcompatibility",{"title":482,"path":483,"stem":484},"Concurrency","\u002Fguides\u002Fconcurrency","guides\u002Fconcurrency",{"title":486,"path":487,"stem":488},"Errors","\u002Fguides\u002Ferrors","guides\u002Ferrors",{"title":490,"path":491,"stem":492},"Evaluation","\u002Fguides\u002Fevaluation","guides\u002Fevaluation",{"title":494,"path":495,"stem":496},"External readers","\u002Fguides\u002Fexternal-readers","guides\u002Fexternal-readers",{"title":498,"path":499,"stem":500},"Installation","\u002Fguides\u002Finstallation","guides\u002Finstallation",{"title":6,"path":471,"stem":473},{"title":503,"path":504,"stem":505},"Migrating from pkl-zig","\u002Fguides\u002Fmigration","guides\u002Fmigration",{"title":507,"path":508,"stem":509},"Ownership","\u002Fguides\u002Fownership","guides\u002Fownership",{"title":511,"path":512,"stem":513},"Projects","\u002Fguides\u002Fprojects","guides\u002Fprojects",{"title":515,"path":516,"stem":517},"Quick start","\u002Fguides\u002Fquickstart","guides\u002Fquickstart",{"title":519,"path":520,"stem":521},"Readers","\u002Fguides\u002Freaders","guides\u002Freaders",{"title":523,"path":524,"stem":525},"Security","\u002Fguides\u002Fsecurity","guides\u002Fsecurity",1792908673512]