[{"data":1,"prerenderedAt":2576},["ShallowReactive",2],{"content:\u002F2026\u002F04\u002Fkratos-logger":3,"surround:\u002F2026\u002F04\u002Fkratos-logger":2567},{"id":4,"title":5,"body":6,"categories":2544,"date":2546,"description":2547,"draft":2548,"extension":2549,"image":2550,"meta":2551,"navigation":342,"path":2553,"permalink":2550,"published":2550,"readingTime":2554,"recommend":2550,"references":2550,"seo":2559,"sitemap":2560,"stem":2561,"tags":2562,"type":2565,"updated":2546,"__hash__":2566},"content\u002Fposts\u002F2026\u002F04\u002Fkratos-logger.md","Kratos 日志系统与 Zap 集成",{"type":7,"value":8,"toc":2533},"minimark",[9,13,22,25,28,131,134,153,169,176,185,188,192,198,201,311,314,322,325,2396,2400,2529],[10,11,12],"h2",{"id":12},"官方文档",[14,15,16],"p",{},[17,18,19],"a",{"href":19,"rel":20},"https:\u002F\u002Fgo-kratos.dev\u002Fzh-cn\u002Fdocs\u002Fcomponent\u002Flog\u002F",[21],"nofollow",[14,23,24],{},"主要是看文档为主",[10,26,27],{"id":27},"写文件",[29,30,35],"pre",{"className":31,"code":32,"language":33,"meta":34,"style":34},"language-go shiki shiki-themes github-light github-dark","\u002F\u002F 输出到 .\u002Fserver.log 文件\nf, err := os.OpenFile(\"server.log\", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)\nif err != nil {\n    return\n}\n","go","",[36,37,38,47,94,115,125],"code",{"__ignoreMap":34},[39,40,43],"span",{"class":41,"data-line":42,"line":42},"line",1,[39,44,46],{"class":45},"sJ8bj","\u002F\u002F 输出到 .\u002Fserver.log 文件\n",[39,48,50,54,58,61,65,69,73,76,79,82,84,87,91],{"class":41,"data-line":49,"line":49},2,[39,51,53],{"class":52},"sVt8B","f, err ",[39,55,57],{"class":56},"szBVR",":=",[39,59,60],{"class":52}," os.",[39,62,64],{"class":63},"sScJk","OpenFile",[39,66,68],{"class":67},"sSDpw","(",[39,70,72],{"class":71},"sZZnC","\"server.log\"",[39,74,75],{"class":52},", os.O_CREATE",[39,77,78],{"class":56},"|",[39,80,81],{"class":52},"os.O_WRONLY",[39,83,78],{"class":56},[39,85,86],{"class":52},"os.O_APPEND, ",[39,88,90],{"class":89},"sj4cs","0666",[39,92,93],{"class":67},")\n",[39,95,97,100,103,106,109,112],{"class":41,"data-line":96,"line":96},3,[39,98,99],{"class":56},"if",[39,101,102],{"class":52}," err ",[39,104,105],{"class":56},"!=",[39,107,108],{"class":89}," nil",[39,110,111],{"class":52}," ",[39,113,114],{"class":67},"{\n",[39,116,118,122],{"class":41,"data-line":117,"line":117},4,[39,119,121],{"class":120},"indent","    ",[39,123,124],{"class":56},"return\n",[39,126,128],{"class":41,"data-line":127,"line":127},5,[39,129,130],{"class":67},"}\n",[10,132,133],{"id":133},"logger和helper",[14,135,136,137,140,141,144,145,148,149,152],{},"通过阅读kratos脚手架生成的代码发现，",[36,138,139],{"code":139},"logger","是在main函数当中注入进去的，",[36,142,143],{"code":143},"biz","和",[36,146,147],{"code":147},"data","在构造函数时",[36,150,151],{"code":151},"Helper","类型",[154,155,156,163],"ul",{},[157,158,159,162],"li",{},[36,160,161],{"code":161},"main"," 统一了日志的接入方式",[157,164,165,168],{},[36,166,167],{"code":167},"biz和data","增强日志的使用",[14,170,171,172,175],{},"Helper更加全面，有",[36,173,174],{"code":174},"数据脱敏，字段级别过滤，语法糖","等功能",[14,177,178,179,181,182,184],{},"一般在",[36,180,143],{"code":143},"或者",[36,183,147],{"code":147},"的构造函数添加字段的过滤",[10,186,187],{"id":187},"配合zap使用",[189,190,191],"h3",{"id":191},"github参考代码",[14,193,194],{},[17,195,196],{"href":196,"rel":197},"https:\u002F\u002Fgithub.com\u002Fgo-kratos\u002Fkratos\u002Fblob\u002Fmain\u002Fcontrib\u002Flog\u002Fzap\u002Fzap.go",[21],[189,199,200],{"id":200},"定义配置",[29,202,206],{"className":203,"code":204,"language":205,"meta":34,"style":34},"language-yaml shiki shiki-themes github-light github-dark","log:\n  format: \"text\" # 日志格式，text, json\n  log_file: \"logs\u002Fserver.log\" # 日志文件\n  max_size: 100 # 单个文件最大 10MB\n  max_backups: 10 # 保留 10 个旧文件\n  max_age: 30 # 保留 30 天\n  compress: true # 启用压缩\n","yaml",[36,207,208,217,234,249,264,279,295],{"__ignoreMap":34},[39,209,210,214],{"class":41,"data-line":42,"line":42},[39,211,213],{"class":212},"s9eBZ","log",[39,215,216],{"class":52},":\n",[39,218,219,222,225,228,231],{"class":41,"data-line":49,"line":49},[39,220,221],{"class":120},"  ",[39,223,224],{"class":212},"format",[39,226,227],{"class":52},": ",[39,229,230],{"class":71},"\"text\"",[39,232,233],{"class":45}," # 日志格式，text, json\n",[39,235,236,238,241,243,246],{"class":41,"data-line":96,"line":96},[39,237,221],{"class":120},[39,239,240],{"class":212},"log_file",[39,242,227],{"class":52},[39,244,245],{"class":71},"\"logs\u002Fserver.log\"",[39,247,248],{"class":45}," # 日志文件\n",[39,250,251,253,256,258,261],{"class":41,"data-line":117,"line":117},[39,252,221],{"class":120},[39,254,255],{"class":212},"max_size",[39,257,227],{"class":52},[39,259,260],{"class":89},"100",[39,262,263],{"class":45}," # 单个文件最大 10MB\n",[39,265,266,268,271,273,276],{"class":41,"data-line":127,"line":127},[39,267,221],{"class":120},[39,269,270],{"class":212},"max_backups",[39,272,227],{"class":52},[39,274,275],{"class":89},"10",[39,277,278],{"class":45}," # 保留 10 个旧文件\n",[39,280,282,284,287,289,292],{"class":41,"data-line":281,"line":281},6,[39,283,221],{"class":120},[39,285,286],{"class":212},"max_age",[39,288,227],{"class":52},[39,290,291],{"class":89},"30",[39,293,294],{"class":45}," # 保留 30 天\n",[39,296,298,300,303,305,308],{"class":41,"data-line":297,"line":297},7,[39,299,221],{"class":120},[39,301,302],{"class":212},"compress",[39,304,227],{"class":52},[39,306,307],{"class":89},"true",[39,309,310],{"class":45}," # 启用压缩\n",[189,312,313],{"id":313},"封装logger",[29,315,320],{"className":316,"code":318,"language":319,"meta":34},[317],"language-text","internal\u002Fpkg\u002Flogger\u002Fzap.go\n","text",[36,321,318],{"__ignoreMap":34},[14,323,324],{},"实现Log方法即可",[29,326,328],{"className":31,"code":327,"language":33,"meta":34,"style":34},"package logger\n\nimport (\n    \"fmt\"\n\n    \"go.uber.org\u002Fzap\"\n    \"go.uber.org\u002Fzap\u002Fzapcore\"\n\n    \"github.com\u002Fgo-kratos\u002Fkratos\u002Fv2\u002Flog\"\n)\n\nvar _ log.Logger = (*Logger)(nil)\n\ntype Logger struct {\n    log    *zap.Logger\n    msgKey string\n}\n\ntype Option struct {\n    Format     string\n    Level      string\n    LogFile    string\n    MaxSize    int32\n    MaxBackups int32\n    MaxAge     int32\n    Compress   bool\n}\n\nfunc NewOption(format string, level string, logFile string, maxSize int32, maxBackups int32, maxAge int32, compress bool) *Option {\n    return &Option{\n        Format:     format,\n        Level:      level,\n        LogFile:    logFile,\n        MaxSize:    maxSize,\n        MaxBackups: maxBackups,\n        MaxAge:     maxAge,\n        Compress:   compress,\n    }\n}\n\nfunc NewZapLogger(opts *Option) *Logger {\n    var encoder zapcore.Encoder\n    if opts.Format == \"text\" {\n        encoder = zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig())\n    } else {\n        encoder = zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())\n    }\n\n    core := zapcore.NewCore(encoder, getLogWriter(opts), parseLogLevel(opts.Level))\n\n    return &Logger{log: zap.New(core), msgKey: log.DefaultMessageKey}\n}\n\nfunc (l *Logger) Log(level log.Level, keyvals ...any) error {\n    \u002F\u002F If logging at this level is completely disabled, skip the overhead of\n    \u002F\u002F string formatting.\n    if zapcore.Level(level) \u003C zapcore.DPanicLevel && !l.log.Core().Enabled(zapcore.Level(level)) {\n        return nil\n    }\n    var (\n        msg    = \"\"\n        keylen = len(keyvals)\n    )\n    if keylen == 0 || keylen%2 != 0 {\n        l.log.Warn(fmt.Sprint(\"Keyvalues must appear in pairs: \", keyvals))\n        return nil\n    }\n\n    data := make([]zap.Field, 0, (keylen\u002F2)+1)\n    for i := 0; i \u003C keylen; i += 2 {\n        if keyvals[i].(string) == l.msgKey {\n            msg, _ = keyvals[i+1].(string)\n            continue\n        }\n        data = append(data, zap.Any(fmt.Sprint(keyvals[i]), keyvals[i+1]))\n    }\n\n    switch level {\n        case log.LevelDebug:\n        l.log.Debug(msg, data...)\n        case log.LevelInfo:\n        l.log.Info(msg, data...)\n        case log.LevelWarn:\n        l.log.Warn(msg, data...)\n        case log.LevelError:\n        l.log.Error(msg, data...)\n        case log.LevelFatal:\n        l.log.Fatal(msg, data...)\n    }\n    return nil\n}\n\nfunc (l *Logger) Sync() error {\n    return l.log.Sync()\n}\n\nfunc (l *Logger) Close() error {\n    return l.Sync()\n}\ninternal\u002Fpkg\u002Flogger\u002Flog.go\npackage logger\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"go.uber.org\u002Fzap\u002Fzapcore\"\n\t\"gopkg.in\u002Fnatefinch\u002Flumberjack.v2\"\n)\n\nfunc parseLogLevel(level string) zapcore.Level {\n\tswitch level {\n\tcase \"debug\":\n\t\treturn zapcore.DebugLevel\n\tcase \"info\":\n\t\treturn zapcore.InfoLevel\n\tcase \"warn\":\n\t\treturn zapcore.WarnLevel\n\tcase \"error\":\n\t\treturn zapcore.ErrorLevel\n\t}\n\treturn zapcore.InfoLevel\n}\n\n\u002F\u002F 全量日志\nfunc getLogWriter(opt *Option) zapcore.WriteSyncer {\n\tlogger := &lumberjack.Logger{\n\t\tFilename:   opt.LogFile,\n\t\tMaxSize:    int(opt.MaxSize),\n\t\tMaxBackups: int(opt.MaxBackups),\n\t\tMaxAge:     int(opt.MaxAge),\n\t\tCompress:   opt.Compress,\n\t}\n\tws := io.MultiWriter(logger, os.Stdout)\n\treturn zapcore.AddSync(ws)\n}\n",[36,329,330,338,344,354,367,371,382,393,398,410,415,420,459,464,480,498,509,514,519,533,543,553,563,574,584,594,605,610,615,689,705,715,725,735,745,755,765,775,784,789,794,824,842,862,896,915,944,953,958,1001,1006,1038,1043,1048,1105,1113,1121,1186,1198,1207,1218,1233,1254,1263,1299,1331,1342,1351,1356,1411,1444,1481,1515,1527,1538,1594,1603,1608,1621,1634,1656,1668,1688,1700,1719,1731,1751,1763,1783,1792,1801,1806,1811,1845,1861,1866,1871,1905,1921,1926,1949,1956,1961,1970,1983,1995,2000,2011,2023,2028,2033,2061,2072,2084,2096,2108,2120,2132,2144,2156,2168,2177,2186,2191,2196,2202,2234,2255,2265,2288,2309,2330,2340,2349,2372,2391],{"__ignoreMap":34},[39,331,332,335],{"class":41,"data-line":42,"line":42},[39,333,334],{"class":56},"package",[39,336,337],{"class":63}," logger\n",[39,339,340],{"class":41,"data-line":49,"line":49},[39,341,343],{"emptyLinePlaceholder":342},true,"\n",[39,345,346,349,351],{"class":41,"data-line":96,"line":96},[39,347,348],{"class":56},"import",[39,350,111],{"class":52},[39,352,353],{"class":67},"(\n",[39,355,356,358,361,364],{"class":41,"data-line":117,"line":117},[39,357,121],{"class":120},[39,359,360],{"class":71},"\"",[39,362,363],{"class":63},"fmt",[39,365,366],{"class":71},"\"\n",[39,368,369],{"class":41,"data-line":127,"line":127},[39,370,343],{"emptyLinePlaceholder":342},[39,372,373,375,377,380],{"class":41,"data-line":281,"line":281},[39,374,121],{"class":120},[39,376,360],{"class":71},[39,378,379],{"class":63},"go.uber.org\u002Fzap",[39,381,366],{"class":71},[39,383,384,386,388,391],{"class":41,"data-line":297,"line":297},[39,385,121],{"class":120},[39,387,360],{"class":71},[39,389,390],{"class":63},"go.uber.org\u002Fzap\u002Fzapcore",[39,392,366],{"class":71},[39,394,396],{"class":41,"data-line":395,"line":395},8,[39,397,343],{"emptyLinePlaceholder":342},[39,399,401,403,405,408],{"class":41,"data-line":400,"line":400},9,[39,402,121],{"class":120},[39,404,360],{"class":71},[39,406,407],{"class":63},"github.com\u002Fgo-kratos\u002Fkratos\u002Fv2\u002Flog",[39,409,366],{"class":71},[39,411,413],{"class":41,"data-line":412,"line":412},10,[39,414,93],{"class":67},[39,416,418],{"class":41,"data-line":417,"line":417},11,[39,419,343],{"emptyLinePlaceholder":342},[39,421,423,426,429,431,434,437,440,442,444,447,449,452,454,457],{"class":41,"data-line":422,"line":422},12,[39,424,425],{"class":56},"var",[39,427,428],{"class":52}," _ ",[39,430,213],{"class":63},[39,432,433],{"class":52},".",[39,435,436],{"class":63},"Logger",[39,438,439],{"class":56}," =",[39,441,111],{"class":52},[39,443,68],{"class":67},[39,445,446],{"class":56},"*",[39,448,436],{"class":63},[39,450,451],{"class":67},")",[39,453,68],{"class":67},[39,455,456],{"class":89},"nil",[39,458,93],{"class":67},[39,460,462],{"class":41,"data-line":461,"line":461},13,[39,463,343],{"emptyLinePlaceholder":342},[39,465,467,470,473,476,478],{"class":41,"data-line":466,"line":466},14,[39,468,469],{"class":56},"type",[39,471,472],{"class":63}," Logger",[39,474,475],{"class":56}," struct",[39,477,111],{"class":52},[39,479,114],{"class":67},[39,481,483,485,488,490,493,495],{"class":41,"data-line":482,"line":482},15,[39,484,121],{"class":120},[39,486,487],{"class":52},"log    ",[39,489,446],{"class":56},[39,491,492],{"class":63},"zap",[39,494,433],{"class":52},[39,496,497],{"class":63},"Logger\n",[39,499,501,503,506],{"class":41,"data-line":500,"line":500},16,[39,502,121],{"class":120},[39,504,505],{"class":52},"msgKey ",[39,507,508],{"class":56},"string\n",[39,510,512],{"class":41,"data-line":511,"line":511},17,[39,513,130],{"class":67},[39,515,517],{"class":41,"data-line":516,"line":516},18,[39,518,343],{"emptyLinePlaceholder":342},[39,520,522,524,527,529,531],{"class":41,"data-line":521,"line":521},19,[39,523,469],{"class":56},[39,525,526],{"class":63}," Option",[39,528,475],{"class":56},[39,530,111],{"class":52},[39,532,114],{"class":67},[39,534,536,538,541],{"class":41,"data-line":535,"line":535},20,[39,537,121],{"class":120},[39,539,540],{"class":52},"Format     ",[39,542,508],{"class":56},[39,544,546,548,551],{"class":41,"data-line":545,"line":545},21,[39,547,121],{"class":120},[39,549,550],{"class":52},"Level      ",[39,552,508],{"class":56},[39,554,556,558,561],{"class":41,"data-line":555,"line":555},22,[39,557,121],{"class":120},[39,559,560],{"class":52},"LogFile    ",[39,562,508],{"class":56},[39,564,566,568,571],{"class":41,"data-line":565,"line":565},23,[39,567,121],{"class":120},[39,569,570],{"class":52},"MaxSize    ",[39,572,573],{"class":56},"int32\n",[39,575,577,579,582],{"class":41,"data-line":576,"line":576},24,[39,578,121],{"class":120},[39,580,581],{"class":52},"MaxBackups ",[39,583,573],{"class":56},[39,585,587,589,592],{"class":41,"data-line":586,"line":586},25,[39,588,121],{"class":120},[39,590,591],{"class":52},"MaxAge     ",[39,593,573],{"class":56},[39,595,597,599,602],{"class":41,"data-line":596,"line":596},26,[39,598,121],{"class":120},[39,600,601],{"class":52},"Compress   ",[39,603,604],{"class":56},"bool\n",[39,606,608],{"class":41,"data-line":607,"line":607},27,[39,609,130],{"class":67},[39,611,613],{"class":41,"data-line":612,"line":612},28,[39,614,343],{"emptyLinePlaceholder":342},[39,616,618,621,624,626,629,632,635,638,640,642,645,647,649,652,655,657,660,662,664,667,669,671,673,676,678,680,682,685,687],{"class":41,"data-line":617,"line":617},29,[39,619,620],{"class":56},"func",[39,622,623],{"class":63}," NewOption",[39,625,68],{"class":67},[39,627,224],{"class":628},"s4XuR",[39,630,631],{"class":56}," string",[39,633,634],{"class":52},", ",[39,636,637],{"class":628},"level",[39,639,631],{"class":56},[39,641,634],{"class":52},[39,643,644],{"class":628},"logFile",[39,646,631],{"class":56},[39,648,634],{"class":52},[39,650,651],{"class":628},"maxSize",[39,653,654],{"class":56}," int32",[39,656,634],{"class":52},[39,658,659],{"class":628},"maxBackups",[39,661,654],{"class":56},[39,663,634],{"class":52},[39,665,666],{"class":628},"maxAge",[39,668,654],{"class":56},[39,670,634],{"class":52},[39,672,302],{"class":628},[39,674,675],{"class":56}," bool",[39,677,451],{"class":67},[39,679,111],{"class":52},[39,681,446],{"class":56},[39,683,684],{"class":63},"Option",[39,686,111],{"class":52},[39,688,114],{"class":67},[39,690,692,694,697,700,702],{"class":41,"data-line":691,"line":691},30,[39,693,121],{"class":120},[39,695,696],{"class":56},"return",[39,698,699],{"class":56}," &",[39,701,684],{"class":63},[39,703,114],{"class":704},"sJX2D",[39,706,708,710,712],{"class":41,"data-line":707,"line":707},31,[39,709,121],{"class":120},[39,711,121],{"class":120},[39,713,714],{"class":52},"Format:     format,\n",[39,716,718,720,722],{"class":41,"data-line":717,"line":717},32,[39,719,121],{"class":120},[39,721,121],{"class":120},[39,723,724],{"class":52},"Level:      level,\n",[39,726,728,730,732],{"class":41,"data-line":727,"line":727},33,[39,729,121],{"class":120},[39,731,121],{"class":120},[39,733,734],{"class":52},"LogFile:    logFile,\n",[39,736,738,740,742],{"class":41,"data-line":737,"line":737},34,[39,739,121],{"class":120},[39,741,121],{"class":120},[39,743,744],{"class":52},"MaxSize:    maxSize,\n",[39,746,748,750,752],{"class":41,"data-line":747,"line":747},35,[39,749,121],{"class":120},[39,751,121],{"class":120},[39,753,754],{"class":52},"MaxBackups: maxBackups,\n",[39,756,758,760,762],{"class":41,"data-line":757,"line":757},36,[39,759,121],{"class":120},[39,761,121],{"class":120},[39,763,764],{"class":52},"MaxAge:     maxAge,\n",[39,766,768,770,772],{"class":41,"data-line":767,"line":767},37,[39,769,121],{"class":120},[39,771,121],{"class":120},[39,773,774],{"class":52},"Compress:   compress,\n",[39,776,778,780,782],{"class":41,"data-line":777,"line":777},38,[39,779,121],{"class":120},[39,781,34],{"class":52},[39,783,130],{"class":704},[39,785,787],{"class":41,"data-line":786,"line":786},39,[39,788,130],{"class":67},[39,790,792],{"class":41,"data-line":791,"line":791},40,[39,793,343],{"emptyLinePlaceholder":342},[39,795,797,799,802,804,807,810,812,814,816,818,820,822],{"class":41,"data-line":796,"line":796},41,[39,798,620],{"class":56},[39,800,801],{"class":63}," NewZapLogger",[39,803,68],{"class":67},[39,805,806],{"class":628},"opts",[39,808,809],{"class":56}," *",[39,811,684],{"class":63},[39,813,451],{"class":67},[39,815,111],{"class":52},[39,817,446],{"class":56},[39,819,436],{"class":63},[39,821,111],{"class":52},[39,823,114],{"class":67},[39,825,827,829,831,834,837,839],{"class":41,"data-line":826,"line":826},42,[39,828,121],{"class":120},[39,830,425],{"class":56},[39,832,833],{"class":52}," encoder ",[39,835,836],{"class":63},"zapcore",[39,838,433],{"class":52},[39,840,841],{"class":63},"Encoder\n",[39,843,845,847,849,852,855,858,860],{"class":41,"data-line":844,"line":844},43,[39,846,121],{"class":120},[39,848,99],{"class":56},[39,850,851],{"class":52}," opts.Format ",[39,853,854],{"class":56},"==",[39,856,857],{"class":71}," \"text\"",[39,859,111],{"class":52},[39,861,114],{"class":704},[39,863,865,867,869,872,875,878,881,884,887,890,892,894],{"class":41,"data-line":864,"line":864},44,[39,866,121],{"class":120},[39,868,121],{"class":120},[39,870,871],{"class":52},"encoder ",[39,873,874],{"class":56},"=",[39,876,877],{"class":52}," zapcore.",[39,879,880],{"class":63},"NewConsoleEncoder",[39,882,68],{"class":883},"sqkie",[39,885,886],{"class":52},"zap.",[39,888,889],{"class":63},"NewDevelopmentEncoderConfig",[39,891,68],{"class":67},[39,893,451],{"class":67},[39,895,93],{"class":883},[39,897,899,901,903,906,908,911,913],{"class":41,"data-line":898,"line":898},45,[39,900,121],{"class":120},[39,902,34],{"class":52},[39,904,905],{"class":704},"}",[39,907,111],{"class":52},[39,909,910],{"class":56},"else",[39,912,111],{"class":52},[39,914,114],{"class":704},[39,916,918,920,922,924,926,928,931,933,935,938,940,942],{"class":41,"data-line":917,"line":917},46,[39,919,121],{"class":120},[39,921,121],{"class":120},[39,923,871],{"class":52},[39,925,874],{"class":56},[39,927,877],{"class":52},[39,929,930],{"class":63},"NewJSONEncoder",[39,932,68],{"class":883},[39,934,886],{"class":52},[39,936,937],{"class":63},"NewProductionEncoderConfig",[39,939,68],{"class":67},[39,941,451],{"class":67},[39,943,93],{"class":883},[39,945,947,949,951],{"class":41,"data-line":946,"line":946},47,[39,948,121],{"class":120},[39,950,34],{"class":52},[39,952,130],{"class":704},[39,954,956],{"class":41,"data-line":955,"line":955},48,[39,957,343],{"emptyLinePlaceholder":342},[39,959,961,963,966,968,970,973,975,978,981,983,985,987,989,992,994,997,999],{"class":41,"data-line":960,"line":960},49,[39,962,121],{"class":120},[39,964,965],{"class":52},"core ",[39,967,57],{"class":56},[39,969,877],{"class":52},[39,971,972],{"class":63},"NewCore",[39,974,68],{"class":704},[39,976,977],{"class":52},"encoder, ",[39,979,980],{"class":63},"getLogWriter",[39,982,68],{"class":883},[39,984,806],{"class":52},[39,986,451],{"class":883},[39,988,634],{"class":52},[39,990,991],{"class":63},"parseLogLevel",[39,993,68],{"class":883},[39,995,996],{"class":52},"opts.Level",[39,998,451],{"class":883},[39,1000,93],{"class":704},[39,1002,1004],{"class":41,"data-line":1003,"line":1003},50,[39,1005,343],{"emptyLinePlaceholder":342},[39,1007,1009,1011,1013,1015,1017,1020,1023,1026,1028,1031,1033,1036],{"class":41,"data-line":1008,"line":1008},51,[39,1010,121],{"class":120},[39,1012,696],{"class":56},[39,1014,699],{"class":56},[39,1016,436],{"class":63},[39,1018,1019],{"class":704},"{",[39,1021,1022],{"class":52},"log: zap.",[39,1024,1025],{"class":63},"New",[39,1027,68],{"class":883},[39,1029,1030],{"class":52},"core",[39,1032,451],{"class":883},[39,1034,1035],{"class":52},", msgKey: log.DefaultMessageKey",[39,1037,130],{"class":704},[39,1039,1041],{"class":41,"data-line":1040,"line":1040},52,[39,1042,130],{"class":67},[39,1044,1046],{"class":41,"data-line":1045,"line":1045},53,[39,1047,343],{"emptyLinePlaceholder":342},[39,1049,1051,1053,1055,1057,1060,1062,1064,1066,1068,1071,1073,1075,1078,1080,1083,1085,1088,1091,1094,1096,1098,1101,1103],{"class":41,"data-line":1050,"line":1050},54,[39,1052,620],{"class":56},[39,1054,111],{"class":52},[39,1056,68],{"class":67},[39,1058,1059],{"class":628},"l ",[39,1061,446],{"class":56},[39,1063,436],{"class":63},[39,1065,451],{"class":67},[39,1067,111],{"class":52},[39,1069,1070],{"class":63},"Log",[39,1072,68],{"class":67},[39,1074,637],{"class":628},[39,1076,1077],{"class":63}," log",[39,1079,433],{"class":52},[39,1081,1082],{"class":63},"Level",[39,1084,634],{"class":52},[39,1086,1087],{"class":628},"keyvals",[39,1089,1090],{"class":56}," ...",[39,1092,1093],{"class":63},"any",[39,1095,451],{"class":67},[39,1097,111],{"class":52},[39,1099,1100],{"class":56},"error",[39,1102,111],{"class":52},[39,1104,114],{"class":67},[39,1106,1108,1110],{"class":41,"data-line":1107,"line":1107},55,[39,1109,121],{"class":120},[39,1111,1112],{"class":45},"\u002F\u002F If logging at this level is completely disabled, skip the overhead of\n",[39,1114,1116,1118],{"class":41,"data-line":1115,"line":1115},56,[39,1117,121],{"class":120},[39,1119,1120],{"class":45},"\u002F\u002F string formatting.\n",[39,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1143,1146,1149,1152,1155,1158,1160,1162,1164,1167,1169,1172,1174,1176,1178,1180,1182,1184],{"class":41,"data-line":1123,"line":1123},57,[39,1125,121],{"class":120},[39,1127,99],{"class":56},[39,1129,877],{"class":52},[39,1131,1082],{"class":63},[39,1133,68],{"class":704},[39,1135,637],{"class":52},[39,1137,451],{"class":704},[39,1139,111],{"class":52},[39,1141,1142],{"class":56},"\u003C",[39,1144,1145],{"class":52}," zapcore.DPanicLevel ",[39,1147,1148],{"class":56},"&&",[39,1150,1151],{"class":56}," !",[39,1153,1154],{"class":52},"l.log.",[39,1156,1157],{"class":63},"Core",[39,1159,68],{"class":704},[39,1161,451],{"class":704},[39,1163,433],{"class":52},[39,1165,1166],{"class":63},"Enabled",[39,1168,68],{"class":704},[39,1170,1171],{"class":52},"zapcore.",[39,1173,1082],{"class":63},[39,1175,68],{"class":883},[39,1177,637],{"class":52},[39,1179,451],{"class":883},[39,1181,451],{"class":704},[39,1183,111],{"class":52},[39,1185,114],{"class":704},[39,1187,1189,1191,1193,1195],{"class":41,"data-line":1188,"line":1188},58,[39,1190,121],{"class":120},[39,1192,121],{"class":120},[39,1194,696],{"class":56},[39,1196,1197],{"class":89}," nil\n",[39,1199,1201,1203,1205],{"class":41,"data-line":1200,"line":1200},59,[39,1202,121],{"class":120},[39,1204,34],{"class":52},[39,1206,130],{"class":704},[39,1208,1210,1212,1214,1216],{"class":41,"data-line":1209,"line":1209},60,[39,1211,121],{"class":120},[39,1213,425],{"class":56},[39,1215,111],{"class":52},[39,1217,353],{"class":704},[39,1219,1221,1223,1225,1228,1230],{"class":41,"data-line":1220,"line":1220},61,[39,1222,121],{"class":120},[39,1224,121],{"class":120},[39,1226,1227],{"class":52},"msg    ",[39,1229,874],{"class":56},[39,1231,1232],{"class":71}," \"\"\n",[39,1234,1236,1238,1240,1243,1245,1248,1250,1252],{"class":41,"data-line":1235,"line":1235},62,[39,1237,121],{"class":120},[39,1239,121],{"class":120},[39,1241,1242],{"class":52},"keylen ",[39,1244,874],{"class":56},[39,1246,1247],{"class":63}," len",[39,1249,68],{"class":883},[39,1251,1087],{"class":52},[39,1253,93],{"class":883},[39,1255,1257,1259,1261],{"class":41,"data-line":1256,"line":1256},63,[39,1258,121],{"class":120},[39,1260,34],{"class":52},[39,1262,93],{"class":704},[39,1264,1266,1268,1270,1273,1275,1278,1281,1284,1287,1290,1293,1295,1297],{"class":41,"data-line":1265,"line":1265},64,[39,1267,121],{"class":120},[39,1269,99],{"class":56},[39,1271,1272],{"class":52}," keylen ",[39,1274,854],{"class":56},[39,1276,1277],{"class":89}," 0",[39,1279,1280],{"class":56}," ||",[39,1282,1283],{"class":52}," keylen",[39,1285,1286],{"class":56},"%",[39,1288,1289],{"class":89},"2",[39,1291,1292],{"class":56}," !=",[39,1294,1277],{"class":89},[39,1296,111],{"class":52},[39,1298,114],{"class":704},[39,1300,1302,1304,1306,1308,1311,1313,1316,1319,1321,1324,1327,1329],{"class":41,"data-line":1301,"line":1301},65,[39,1303,121],{"class":120},[39,1305,121],{"class":120},[39,1307,1154],{"class":52},[39,1309,1310],{"class":63},"Warn",[39,1312,68],{"class":883},[39,1314,1315],{"class":52},"fmt.",[39,1317,1318],{"class":63},"Sprint",[39,1320,68],{"class":67},[39,1322,1323],{"class":71},"\"Keyvalues must appear in pairs: \"",[39,1325,1326],{"class":52},", keyvals",[39,1328,451],{"class":67},[39,1330,93],{"class":883},[39,1332,1334,1336,1338,1340],{"class":41,"data-line":1333,"line":1333},66,[39,1335,121],{"class":120},[39,1337,121],{"class":120},[39,1339,696],{"class":56},[39,1341,1197],{"class":89},[39,1343,1345,1347,1349],{"class":41,"data-line":1344,"line":1344},67,[39,1346,121],{"class":120},[39,1348,34],{"class":52},[39,1350,130],{"class":704},[39,1352,1354],{"class":41,"data-line":1353,"line":1353},68,[39,1355,343],{"emptyLinePlaceholder":342},[39,1357,1359,1361,1364,1366,1369,1371,1374,1377,1379,1381,1384,1386,1389,1391,1393,1396,1399,1401,1403,1406,1409],{"class":41,"data-line":1358,"line":1358},69,[39,1360,121],{"class":120},[39,1362,1363],{"class":52},"data ",[39,1365,57],{"class":56},[39,1367,1368],{"class":63}," make",[39,1370,68],{"class":704},[39,1372,1373],{"class":883},"[",[39,1375,1376],{"class":883},"]",[39,1378,492],{"class":63},[39,1380,433],{"class":52},[39,1382,1383],{"class":63},"Field",[39,1385,634],{"class":52},[39,1387,1388],{"class":89},"0",[39,1390,634],{"class":52},[39,1392,68],{"class":883},[39,1394,1395],{"class":52},"keylen",[39,1397,1398],{"class":56},"\u002F",[39,1400,1289],{"class":89},[39,1402,451],{"class":883},[39,1404,1405],{"class":56},"+",[39,1407,1408],{"class":89},"1",[39,1410,93],{"class":704},[39,1412,1414,1416,1419,1422,1424,1426,1429,1431,1434,1437,1440,1442],{"class":41,"data-line":1413,"line":1413},70,[39,1415,121],{"class":120},[39,1417,1418],{"class":56},"for",[39,1420,1421],{"class":52}," i ",[39,1423,57],{"class":56},[39,1425,1277],{"class":89},[39,1427,1428],{"class":52},"; i ",[39,1430,1142],{"class":56},[39,1432,1433],{"class":52}," keylen; i ",[39,1435,1436],{"class":56},"+=",[39,1438,1439],{"class":89}," 2",[39,1441,111],{"class":52},[39,1443,114],{"class":704},[39,1445,1447,1449,1451,1453,1456,1458,1461,1463,1465,1467,1470,1472,1474,1476,1479],{"class":41,"data-line":1446,"line":1446},71,[39,1448,121],{"class":120},[39,1450,121],{"class":120},[39,1452,99],{"class":56},[39,1454,1455],{"class":52}," keyvals",[39,1457,1373],{"class":883},[39,1459,1460],{"class":52},"i",[39,1462,1376],{"class":883},[39,1464,433],{"class":52},[39,1466,68],{"class":883},[39,1468,1469],{"class":56},"string",[39,1471,451],{"class":883},[39,1473,111],{"class":52},[39,1475,854],{"class":56},[39,1477,1478],{"class":52}," l.msgKey ",[39,1480,114],{"class":883},[39,1482,1484,1486,1488,1490,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513],{"class":41,"data-line":1483,"line":1483},72,[39,1485,121],{"class":120},[39,1487,121],{"class":120},[39,1489,121],{"class":120},[39,1491,1492],{"class":52},"msg, _ ",[39,1494,874],{"class":56},[39,1496,1455],{"class":52},[39,1498,1373],{"class":67},[39,1500,1460],{"class":52},[39,1502,1405],{"class":56},[39,1504,1408],{"class":89},[39,1506,1376],{"class":67},[39,1508,433],{"class":52},[39,1510,68],{"class":67},[39,1512,1469],{"class":56},[39,1514,93],{"class":67},[39,1516,1518,1520,1522,1524],{"class":41,"data-line":1517,"line":1517},73,[39,1519,121],{"class":120},[39,1521,121],{"class":120},[39,1523,121],{"class":120},[39,1525,1526],{"class":56},"continue\n",[39,1528,1530,1532,1534,1536],{"class":41,"data-line":1529,"line":1529},74,[39,1531,121],{"class":120},[39,1533,121],{"class":120},[39,1535,34],{"class":52},[39,1537,130],{"class":883},[39,1539,1541,1543,1545,1547,1549,1552,1554,1557,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592],{"class":41,"data-line":1540,"line":1540},75,[39,1542,121],{"class":120},[39,1544,121],{"class":120},[39,1546,1363],{"class":52},[39,1548,874],{"class":56},[39,1550,1551],{"class":63}," append",[39,1553,68],{"class":883},[39,1555,1556],{"class":52},"data, zap.",[39,1558,1559],{"class":63},"Any",[39,1561,68],{"class":67},[39,1563,1315],{"class":52},[39,1565,1318],{"class":63},[39,1567,68],{"class":704},[39,1569,1087],{"class":52},[39,1571,1373],{"class":883},[39,1573,1460],{"class":52},[39,1575,1376],{"class":883},[39,1577,451],{"class":704},[39,1579,1326],{"class":52},[39,1581,1373],{"class":704},[39,1583,1460],{"class":52},[39,1585,1405],{"class":56},[39,1587,1408],{"class":89},[39,1589,1376],{"class":704},[39,1591,451],{"class":67},[39,1593,93],{"class":883},[39,1595,1597,1599,1601],{"class":41,"data-line":1596,"line":1596},76,[39,1598,121],{"class":120},[39,1600,34],{"class":52},[39,1602,130],{"class":704},[39,1604,1606],{"class":41,"data-line":1605,"line":1605},77,[39,1607,343],{"emptyLinePlaceholder":342},[39,1609,1611,1613,1616,1619],{"class":41,"data-line":1610,"line":1610},78,[39,1612,121],{"class":120},[39,1614,1615],{"class":56},"switch",[39,1617,1618],{"class":52}," level ",[39,1620,114],{"class":704},[39,1622,1624,1626,1628,1631],{"class":41,"data-line":1623,"line":1623},79,[39,1625,121],{"class":120},[39,1627,121],{"class":120},[39,1629,1630],{"class":56},"case",[39,1632,1633],{"class":52}," log.LevelDebug:\n",[39,1635,1637,1639,1641,1643,1646,1648,1651,1654],{"class":41,"data-line":1636,"line":1636},80,[39,1638,121],{"class":120},[39,1640,121],{"class":120},[39,1642,1154],{"class":52},[39,1644,1645],{"class":63},"Debug",[39,1647,68],{"class":883},[39,1649,1650],{"class":52},"msg, data",[39,1652,1653],{"class":56},"...",[39,1655,93],{"class":883},[39,1657,1659,1661,1663,1665],{"class":41,"data-line":1658,"line":1658},81,[39,1660,121],{"class":120},[39,1662,121],{"class":120},[39,1664,1630],{"class":56},[39,1666,1667],{"class":52}," log.LevelInfo:\n",[39,1669,1671,1673,1675,1677,1680,1682,1684,1686],{"class":41,"data-line":1670,"line":1670},82,[39,1672,121],{"class":120},[39,1674,121],{"class":120},[39,1676,1154],{"class":52},[39,1678,1679],{"class":63},"Info",[39,1681,68],{"class":883},[39,1683,1650],{"class":52},[39,1685,1653],{"class":56},[39,1687,93],{"class":883},[39,1689,1691,1693,1695,1697],{"class":41,"data-line":1690,"line":1690},83,[39,1692,121],{"class":120},[39,1694,121],{"class":120},[39,1696,1630],{"class":56},[39,1698,1699],{"class":52}," log.LevelWarn:\n",[39,1701,1703,1705,1707,1709,1711,1713,1715,1717],{"class":41,"data-line":1702,"line":1702},84,[39,1704,121],{"class":120},[39,1706,121],{"class":120},[39,1708,1154],{"class":52},[39,1710,1310],{"class":63},[39,1712,68],{"class":883},[39,1714,1650],{"class":52},[39,1716,1653],{"class":56},[39,1718,93],{"class":883},[39,1720,1722,1724,1726,1728],{"class":41,"data-line":1721,"line":1721},85,[39,1723,121],{"class":120},[39,1725,121],{"class":120},[39,1727,1630],{"class":56},[39,1729,1730],{"class":52}," log.LevelError:\n",[39,1732,1734,1736,1738,1740,1743,1745,1747,1749],{"class":41,"data-line":1733,"line":1733},86,[39,1735,121],{"class":120},[39,1737,121],{"class":120},[39,1739,1154],{"class":52},[39,1741,1742],{"class":63},"Error",[39,1744,68],{"class":883},[39,1746,1650],{"class":52},[39,1748,1653],{"class":56},[39,1750,93],{"class":883},[39,1752,1754,1756,1758,1760],{"class":41,"data-line":1753,"line":1753},87,[39,1755,121],{"class":120},[39,1757,121],{"class":120},[39,1759,1630],{"class":56},[39,1761,1762],{"class":52}," log.LevelFatal:\n",[39,1764,1766,1768,1770,1772,1775,1777,1779,1781],{"class":41,"data-line":1765,"line":1765},88,[39,1767,121],{"class":120},[39,1769,121],{"class":120},[39,1771,1154],{"class":52},[39,1773,1774],{"class":63},"Fatal",[39,1776,68],{"class":883},[39,1778,1650],{"class":52},[39,1780,1653],{"class":56},[39,1782,93],{"class":883},[39,1784,1786,1788,1790],{"class":41,"data-line":1785,"line":1785},89,[39,1787,121],{"class":120},[39,1789,34],{"class":52},[39,1791,130],{"class":704},[39,1793,1795,1797,1799],{"class":41,"data-line":1794,"line":1794},90,[39,1796,121],{"class":120},[39,1798,696],{"class":56},[39,1800,1197],{"class":89},[39,1802,1804],{"class":41,"data-line":1803,"line":1803},91,[39,1805,130],{"class":67},[39,1807,1809],{"class":41,"data-line":1808,"line":1808},92,[39,1810,343],{"emptyLinePlaceholder":342},[39,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1833,1835,1837,1839,1841,1843],{"class":41,"data-line":1813,"line":1813},93,[39,1815,620],{"class":56},[39,1817,111],{"class":52},[39,1819,68],{"class":67},[39,1821,1059],{"class":628},[39,1823,446],{"class":56},[39,1825,436],{"class":63},[39,1827,451],{"class":67},[39,1829,111],{"class":52},[39,1831,1832],{"class":63},"Sync",[39,1834,68],{"class":67},[39,1836,451],{"class":67},[39,1838,111],{"class":52},[39,1840,1100],{"class":56},[39,1842,111],{"class":52},[39,1844,114],{"class":67},[39,1846,1848,1850,1852,1855,1857,1859],{"class":41,"data-line":1847,"line":1847},94,[39,1849,121],{"class":120},[39,1851,696],{"class":56},[39,1853,1854],{"class":52}," l.log.",[39,1856,1832],{"class":63},[39,1858,68],{"class":704},[39,1860,93],{"class":704},[39,1862,1864],{"class":41,"data-line":1863,"line":1863},95,[39,1865,130],{"class":67},[39,1867,1869],{"class":41,"data-line":1868,"line":1868},96,[39,1870,343],{"emptyLinePlaceholder":342},[39,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1893,1895,1897,1899,1901,1903],{"class":41,"data-line":1873,"line":1873},97,[39,1875,620],{"class":56},[39,1877,111],{"class":52},[39,1879,68],{"class":67},[39,1881,1059],{"class":628},[39,1883,446],{"class":56},[39,1885,436],{"class":63},[39,1887,451],{"class":67},[39,1889,111],{"class":52},[39,1891,1892],{"class":63},"Close",[39,1894,68],{"class":67},[39,1896,451],{"class":67},[39,1898,111],{"class":52},[39,1900,1100],{"class":56},[39,1902,111],{"class":52},[39,1904,114],{"class":67},[39,1906,1908,1910,1912,1915,1917,1919],{"class":41,"data-line":1907,"line":1907},98,[39,1909,121],{"class":120},[39,1911,696],{"class":56},[39,1913,1914],{"class":52}," l.",[39,1916,1832],{"class":63},[39,1918,68],{"class":704},[39,1920,93],{"class":704},[39,1922,1924],{"class":41,"data-line":1923,"line":1923},99,[39,1925,130],{"class":67},[39,1927,1929,1932,1934,1937,1939,1941,1943,1946],{"class":41,"data-line":1928,"line":1928},100,[39,1930,1931],{"class":52},"internal",[39,1933,1398],{"class":56},[39,1935,1936],{"class":52},"pkg",[39,1938,1398],{"class":56},[39,1940,139],{"class":52},[39,1942,1398],{"class":56},[39,1944,1945],{"class":52},"log.",[39,1947,1948],{"class":56},"go\n",[39,1950,1952,1954],{"class":41,"data-line":1951,"line":1951},101,[39,1953,334],{"class":56},[39,1955,337],{"class":63},[39,1957,1959],{"class":41,"data-line":1958,"line":1958},102,[39,1960,343],{"emptyLinePlaceholder":342},[39,1962,1964,1966,1968],{"class":41,"data-line":1963,"line":1963},103,[39,1965,348],{"class":56},[39,1967,111],{"class":52},[39,1969,353],{"class":67},[39,1971,1973,1976,1978,1981],{"class":41,"data-line":1972,"line":1972},104,[39,1974,1975],{"class":120},"\t",[39,1977,360],{"class":71},[39,1979,1980],{"class":63},"io",[39,1982,366],{"class":71},[39,1984,1986,1988,1990,1993],{"class":41,"data-line":1985,"line":1985},105,[39,1987,1975],{"class":120},[39,1989,360],{"class":71},[39,1991,1992],{"class":63},"os",[39,1994,366],{"class":71},[39,1996,1998],{"class":41,"data-line":1997,"line":1997},106,[39,1999,343],{"emptyLinePlaceholder":342},[39,2001,2003,2005,2007,2009],{"class":41,"data-line":2002,"line":2002},107,[39,2004,1975],{"class":120},[39,2006,360],{"class":71},[39,2008,390],{"class":63},[39,2010,366],{"class":71},[39,2012,2014,2016,2018,2021],{"class":41,"data-line":2013,"line":2013},108,[39,2015,1975],{"class":120},[39,2017,360],{"class":71},[39,2019,2020],{"class":63},"gopkg.in\u002Fnatefinch\u002Flumberjack.v2",[39,2022,366],{"class":71},[39,2024,2026],{"class":41,"data-line":2025,"line":2025},109,[39,2027,93],{"class":67},[39,2029,2031],{"class":41,"data-line":2030,"line":2030},110,[39,2032,343],{"emptyLinePlaceholder":342},[39,2034,2036,2038,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059],{"class":41,"data-line":2035,"line":2035},111,[39,2037,620],{"class":56},[39,2039,2040],{"class":63}," parseLogLevel",[39,2042,68],{"class":67},[39,2044,637],{"class":628},[39,2046,631],{"class":56},[39,2048,451],{"class":67},[39,2050,111],{"class":52},[39,2052,836],{"class":63},[39,2054,433],{"class":52},[39,2056,1082],{"class":63},[39,2058,111],{"class":52},[39,2060,114],{"class":67},[39,2062,2064,2066,2068,2070],{"class":41,"data-line":2063,"line":2063},112,[39,2065,1975],{"class":120},[39,2067,1615],{"class":56},[39,2069,1618],{"class":52},[39,2071,114],{"class":704},[39,2073,2075,2077,2079,2082],{"class":41,"data-line":2074,"line":2074},113,[39,2076,1975],{"class":120},[39,2078,1630],{"class":56},[39,2080,2081],{"class":71}," \"debug\"",[39,2083,216],{"class":52},[39,2085,2087,2089,2091,2093],{"class":41,"data-line":2086,"line":2086},114,[39,2088,1975],{"class":120},[39,2090,1975],{"class":120},[39,2092,696],{"class":56},[39,2094,2095],{"class":52}," zapcore.DebugLevel\n",[39,2097,2099,2101,2103,2106],{"class":41,"data-line":2098,"line":2098},115,[39,2100,1975],{"class":120},[39,2102,1630],{"class":56},[39,2104,2105],{"class":71}," \"info\"",[39,2107,216],{"class":52},[39,2109,2111,2113,2115,2117],{"class":41,"data-line":2110,"line":2110},116,[39,2112,1975],{"class":120},[39,2114,1975],{"class":120},[39,2116,696],{"class":56},[39,2118,2119],{"class":52}," zapcore.InfoLevel\n",[39,2121,2123,2125,2127,2130],{"class":41,"data-line":2122,"line":2122},117,[39,2124,1975],{"class":120},[39,2126,1630],{"class":56},[39,2128,2129],{"class":71}," \"warn\"",[39,2131,216],{"class":52},[39,2133,2135,2137,2139,2141],{"class":41,"data-line":2134,"line":2134},118,[39,2136,1975],{"class":120},[39,2138,1975],{"class":120},[39,2140,696],{"class":56},[39,2142,2143],{"class":52}," zapcore.WarnLevel\n",[39,2145,2147,2149,2151,2154],{"class":41,"data-line":2146,"line":2146},119,[39,2148,1975],{"class":120},[39,2150,1630],{"class":56},[39,2152,2153],{"class":71}," \"error\"",[39,2155,216],{"class":52},[39,2157,2159,2161,2163,2165],{"class":41,"data-line":2158,"line":2158},120,[39,2160,1975],{"class":120},[39,2162,1975],{"class":120},[39,2164,696],{"class":56},[39,2166,2167],{"class":52}," zapcore.ErrorLevel\n",[39,2169,2171,2173,2175],{"class":41,"data-line":2170,"line":2170},121,[39,2172,1975],{"class":120},[39,2174,34],{"class":52},[39,2176,130],{"class":704},[39,2178,2180,2182,2184],{"class":41,"data-line":2179,"line":2179},122,[39,2181,1975],{"class":120},[39,2183,696],{"class":56},[39,2185,2119],{"class":52},[39,2187,2189],{"class":41,"data-line":2188,"line":2188},123,[39,2190,130],{"class":67},[39,2192,2194],{"class":41,"data-line":2193,"line":2193},124,[39,2195,343],{"emptyLinePlaceholder":342},[39,2197,2199],{"class":41,"data-line":2198,"line":2198},125,[39,2200,2201],{"class":45},"\u002F\u002F 全量日志\n",[39,2203,2205,2207,2210,2212,2215,2217,2219,2221,2223,2225,2227,2230,2232],{"class":41,"data-line":2204,"line":2204},126,[39,2206,620],{"class":56},[39,2208,2209],{"class":63}," getLogWriter",[39,2211,68],{"class":67},[39,2213,2214],{"class":628},"opt",[39,2216,809],{"class":56},[39,2218,684],{"class":63},[39,2220,451],{"class":67},[39,2222,111],{"class":52},[39,2224,836],{"class":63},[39,2226,433],{"class":52},[39,2228,2229],{"class":63},"WriteSyncer",[39,2231,111],{"class":52},[39,2233,114],{"class":67},[39,2235,2237,2239,2242,2244,2246,2249,2251,2253],{"class":41,"data-line":2236,"line":2236},127,[39,2238,1975],{"class":120},[39,2240,2241],{"class":52},"logger ",[39,2243,57],{"class":56},[39,2245,699],{"class":56},[39,2247,2248],{"class":63},"lumberjack",[39,2250,433],{"class":52},[39,2252,436],{"class":63},[39,2254,114],{"class":704},[39,2256,2258,2260,2262],{"class":41,"data-line":2257,"line":2257},128,[39,2259,1975],{"class":120},[39,2261,1975],{"class":120},[39,2263,2264],{"class":52},"Filename:   opt.LogFile,\n",[39,2266,2268,2270,2272,2275,2278,2280,2283,2285],{"class":41,"data-line":2267,"line":2267},129,[39,2269,1975],{"class":120},[39,2271,1975],{"class":120},[39,2273,2274],{"class":52},"MaxSize:    ",[39,2276,2277],{"class":56},"int",[39,2279,68],{"class":883},[39,2281,2282],{"class":52},"opt.MaxSize",[39,2284,451],{"class":883},[39,2286,2287],{"class":52},",\n",[39,2289,2291,2293,2295,2298,2300,2302,2305,2307],{"class":41,"data-line":2290,"line":2290},130,[39,2292,1975],{"class":120},[39,2294,1975],{"class":120},[39,2296,2297],{"class":52},"MaxBackups: ",[39,2299,2277],{"class":56},[39,2301,68],{"class":883},[39,2303,2304],{"class":52},"opt.MaxBackups",[39,2306,451],{"class":883},[39,2308,2287],{"class":52},[39,2310,2312,2314,2316,2319,2321,2323,2326,2328],{"class":41,"data-line":2311,"line":2311},131,[39,2313,1975],{"class":120},[39,2315,1975],{"class":120},[39,2317,2318],{"class":52},"MaxAge:     ",[39,2320,2277],{"class":56},[39,2322,68],{"class":883},[39,2324,2325],{"class":52},"opt.MaxAge",[39,2327,451],{"class":883},[39,2329,2287],{"class":52},[39,2331,2333,2335,2337],{"class":41,"data-line":2332,"line":2332},132,[39,2334,1975],{"class":120},[39,2336,1975],{"class":120},[39,2338,2339],{"class":52},"Compress:   opt.Compress,\n",[39,2341,2343,2345,2347],{"class":41,"data-line":2342,"line":2342},133,[39,2344,1975],{"class":120},[39,2346,34],{"class":52},[39,2348,130],{"class":704},[39,2350,2352,2354,2357,2359,2362,2365,2367,2370],{"class":41,"data-line":2351,"line":2351},134,[39,2353,1975],{"class":120},[39,2355,2356],{"class":52},"ws ",[39,2358,57],{"class":56},[39,2360,2361],{"class":52}," io.",[39,2363,2364],{"class":63},"MultiWriter",[39,2366,68],{"class":704},[39,2368,2369],{"class":52},"logger, os.Stdout",[39,2371,93],{"class":704},[39,2373,2375,2377,2379,2381,2384,2386,2389],{"class":41,"data-line":2374,"line":2374},135,[39,2376,1975],{"class":120},[39,2378,696],{"class":56},[39,2380,877],{"class":52},[39,2382,2383],{"class":63},"AddSync",[39,2385,68],{"class":704},[39,2387,2388],{"class":52},"ws",[39,2390,93],{"class":704},[39,2392,2394],{"class":41,"data-line":2393,"line":2393},136,[39,2395,130],{"class":67},[189,2397,2399],{"id":2398},"在maingo引入","在main.go引入",[29,2401,2403],{"className":31,"code":2402,"language":33,"meta":34,"style":34},"\u002F\u002F zap 封装的日志\nlogger := log.With(logger.NewZapLogger(logger.NewOption(bc.Log)),\n    \"caller\", log.DefaultCaller,\n    \"service.id\", id,\n    \"service.name\", Name,\n    \"service.version\", Version,\n    \"trace.id\", tracing.TraceID(),\n    \"span.id\", tracing.SpanID(),\n)\n",[36,2404,2405,2410,2448,2458,2468,2478,2488,2507,2525],{"__ignoreMap":34},[39,2406,2407],{"class":41,"data-line":42,"line":42},[39,2408,2409],{"class":45},"\u002F\u002F zap 封装的日志\n",[39,2411,2412,2414,2416,2419,2422,2424,2427,2430,2432,2434,2437,2439,2442,2444,2446],{"class":41,"data-line":49,"line":49},[39,2413,2241],{"class":52},[39,2415,57],{"class":56},[39,2417,2418],{"class":52}," log.",[39,2420,2421],{"class":63},"With",[39,2423,68],{"class":67},[39,2425,2426],{"class":52},"logger.",[39,2428,2429],{"class":63},"NewZapLogger",[39,2431,68],{"class":704},[39,2433,2426],{"class":52},[39,2435,2436],{"class":63},"NewOption",[39,2438,68],{"class":883},[39,2440,2441],{"class":52},"bc.Log",[39,2443,451],{"class":883},[39,2445,451],{"class":704},[39,2447,2287],{"class":52},[39,2449,2450,2452,2455],{"class":41,"data-line":96,"line":96},[39,2451,121],{"class":120},[39,2453,2454],{"class":71},"\"caller\"",[39,2456,2457],{"class":52},", log.DefaultCaller,\n",[39,2459,2460,2462,2465],{"class":41,"data-line":117,"line":117},[39,2461,121],{"class":120},[39,2463,2464],{"class":71},"\"service.id\"",[39,2466,2467],{"class":52},", id,\n",[39,2469,2470,2472,2475],{"class":41,"data-line":127,"line":127},[39,2471,121],{"class":120},[39,2473,2474],{"class":71},"\"service.name\"",[39,2476,2477],{"class":52},", Name,\n",[39,2479,2480,2482,2485],{"class":41,"data-line":281,"line":281},[39,2481,121],{"class":120},[39,2483,2484],{"class":71},"\"service.version\"",[39,2486,2487],{"class":52},", Version,\n",[39,2489,2490,2492,2495,2498,2501,2503,2505],{"class":41,"data-line":297,"line":297},[39,2491,121],{"class":120},[39,2493,2494],{"class":71},"\"trace.id\"",[39,2496,2497],{"class":52},", tracing.",[39,2499,2500],{"class":63},"TraceID",[39,2502,68],{"class":704},[39,2504,451],{"class":704},[39,2506,2287],{"class":52},[39,2508,2509,2511,2514,2516,2519,2521,2523],{"class":41,"data-line":395,"line":395},[39,2510,121],{"class":120},[39,2512,2513],{"class":71},"\"span.id\"",[39,2515,2497],{"class":52},[39,2517,2518],{"class":63},"SpanID",[39,2520,68],{"class":704},[39,2522,451],{"class":704},[39,2524,2287],{"class":52},[39,2526,2527],{"class":41,"data-line":400,"line":400},[39,2528,93],{"class":67},[2530,2531,2532],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sSDpw, html code.shiki .sSDpw{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJX2D, html code.shiki .sJX2D{--shiki-default:#e36209;--shiki-dark:#ffab70}html pre.shiki code .sqkie, html code.shiki .sqkie{--shiki-default:#5a32a3;--shiki-dark:#b392f0}",{"title":34,"searchDepth":117,"depth":117,"links":2534},[2535,2536,2537,2538],{"id":12,"depth":49,"text":12},{"id":27,"depth":49,"text":27},{"id":133,"depth":49,"text":133},{"id":187,"depth":49,"text":187,"children":2539},[2540,2541,2542,2543],{"id":191,"depth":96,"text":191},{"id":200,"depth":96,"text":200},{"id":313,"depth":96,"text":313},{"id":2398,"depth":96,"text":2399},[2545],"微服务","2026-04-12","介绍 Kratos 日志组件的使用方式，并演示文件输出、Helper 封装以及与 Zap 日志库的集成。",false,"md",null,{"slots":2552},{},"\u002F2026\u002F04\u002Fkratos-logger",{"text":2555,"minutes":2556,"time":2557,"words":2558},"3 min read",2.695,161700,539,{"title":5,"description":2547},{"loc":2553},"posts\u002F2026\u002F04\u002Fkratos-logger",[2563,2564],"Kratos","日志","tech","HoJYxaUiTf5y7okPML9UVCTba4gTGzaKjJSvSGB6pkc",[2568,2572],{"title":2569,"path":2570,"stem":2571,"date":2546,"type":2565,"children":-1},"Kratos 常用命令速查","\u002F2026\u002F04\u002Fkratos-instruction","posts\u002F2026\u002F04\u002Fkratos-instruction",{"title":2573,"path":2574,"stem":2575,"date":2546,"type":2565,"children":-1},"Kratos HTTP 请求与路由配置","\u002F2026\u002F04\u002Fkratos-request","posts\u002F2026\u002F04\u002Fkratos-request",1786555054145]