[{"data":1,"prerenderedAt":970},["ShallowReactive",2],{"content-zh-TW-getting-started":3},{"doc":4,"debug":904},{"id":5,"title":6,"body":7,"description":897,"extension":898,"meta":899,"navigation":111,"path":900,"seo":901,"stem":902,"__hash__":903},"content\u002Fzh-TW\u002Fgetting-started.md","快速開始",{"type":8,"value":9,"toc":883},"minimark",[10,13,17,53,90,94,119,129,137,141,179,187,190,210,214,234,240,244,274,290,293,297,331,344,346,350,381,384,449,452,454,458,507,510,516,518,522,532,724,731,737,740,824,826,829,852,855,879],[11,12,6],"h1",{"id":6},[14,15,16],"h2",{"id":16},"安裝",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-bash shiki shiki-themes github-light","dotnet add package OzaLog --version 3.1.0\n","bash","",[25,26,27],"code",{"__ignoreMap":23},[28,29,32,36,40,43,46,50],"span",{"class":30,"line":31},"line",1,[28,33,35],{"class":34},"s7eDp","dotnet",[28,37,39],{"class":38},"sYBdl"," add",[28,41,42],{"class":38}," package",[28,44,45],{"class":38}," OzaLog",[28,47,49],{"class":48},"sYu0t"," --version",[28,51,52],{"class":48}," 3.1.0\n",[54,55,56,57,60,61,60,64,60,67,60,70,73,74,85,86,89],"p",{},"支援的 TargetFrameworks:",[25,58,59],{},"netstandard2.0","、",[25,62,63],{},"netstandard2.1",[25,65,66],{},"net8.0",[25,68,69],{},"net9.0",[25,71,72],{},"net10.0","。",[75,76,77,79,80,79,82,84],"strong",{},[25,78,66],{}," \u002F ",[25,81,69],{},[25,83,72],{}," 零 NuGet 依賴","(使用 BCL 內建的 ",[25,87,88],{},"System.Text.Json",")。",[14,91,93],{"id":92},"_1-第一行-log","1. 第一行 log",[18,95,99],{"className":96,"code":97,"language":98,"meta":23,"style":23},"language-csharp shiki shiki-themes github-light","using OzaLog;\n\nLOG.Info_Log(\"Hello, OzaLog!\");\n","csharp",[25,100,101,106,113],{"__ignoreMap":23},[28,102,103],{"class":30,"line":31},[28,104,105],{},"using OzaLog;\n",[28,107,109],{"class":30,"line":108},2,[28,110,112],{"emptyLinePlaceholder":111},true,"\n",[28,114,116],{"class":30,"line":115},3,[28,117,118],{},"LOG.Info_Log(\"Hello, OzaLog!\");\n",[54,120,121,122,128],{},"完成 — ",[75,123,124,125],{},"不需呼叫 ",[25,126,127],{},"Configure","。第一次寫入時會自動以預設值初始化。log 檔案會出現在:",[18,130,135],{"className":131,"code":133,"language":134},[132],"language-text","{你的應用程式資料夾}\u002Flogs\u002F{yyyyMMdd}\u002FLogFiles\u002FInfo_Log.txt\n","text",[25,136,133],{"__ignoreMap":23},[14,138,140],{"id":139},"_2-所有-loglevel","2. 所有 LogLevel",[18,142,144],{"className":96,"code":143,"language":98,"meta":23,"style":23},"LOG.Trace_Log(\"追蹤訊息\");\nLOG.Debug_Log(\"除錯訊息\");\nLOG.Info_Log(\"一般資訊\");\nLOG.Warn_Log(\"警告\");\nLOG.Error_Log(\"錯誤\");      \u002F\u002F 自動 immediate flush\nLOG.Fatal_Log(\"致命錯誤\");   \u002F\u002F 自動 immediate flush\n",[25,145,146,151,156,161,167,173],{"__ignoreMap":23},[28,147,148],{"class":30,"line":31},[28,149,150],{},"LOG.Trace_Log(\"追蹤訊息\");\n",[28,152,153],{"class":30,"line":108},[28,154,155],{},"LOG.Debug_Log(\"除錯訊息\");\n",[28,157,158],{"class":30,"line":115},[28,159,160],{},"LOG.Info_Log(\"一般資訊\");\n",[28,162,164],{"class":30,"line":163},4,[28,165,166],{},"LOG.Warn_Log(\"警告\");\n",[28,168,170],{"class":30,"line":169},5,[28,171,172],{},"LOG.Error_Log(\"錯誤\");      \u002F\u002F 自動 immediate flush\n",[28,174,176],{"class":30,"line":175},6,[28,177,178],{},"LOG.Fatal_Log(\"致命錯誤\");   \u002F\u002F 自動 immediate flush\n",[14,180,182,183,186],{"id":181},"_3-用-customname_log-做-per-symbol-檔案分桶","3. 用 ",[25,184,185],{},"CustomName_Log"," 做 per-symbol 檔案分桶",[54,188,189],{},"交易場景常見用法 — 把每個商品的 log 路由到專屬檔案:",[18,191,193],{"className":96,"code":192,"language":98,"meta":23,"style":23},"LOG.CustomName_Log(\"BTC\", \"tick 67890.12\");\nLOG.CustomName_Log(\"ETH\", \"tick 3567.45\");\n\u002F\u002F → BTC_Log.txt、ETH_Log.txt 位於 {logs}\u002F{yyyyMMdd}\u002FLogFiles\u002F\n",[25,194,195,200,205],{"__ignoreMap":23},[28,196,197],{"class":30,"line":31},[28,198,199],{},"LOG.CustomName_Log(\"BTC\", \"tick 67890.12\");\n",[28,201,202],{"class":30,"line":108},[28,203,204],{},"LOG.CustomName_Log(\"ETH\", \"tick 3567.45\");\n",[28,206,207],{"class":30,"line":115},[28,208,209],{},"\u002F\u002F → BTC_Log.txt、ETH_Log.txt 位於 {logs}\u002F{yyyyMMdd}\u002FLogFiles\u002F\n",[14,211,213],{"id":212},"_4-把物件以-json-寫入","4. 把物件以 JSON 寫入",[18,215,217],{"className":96,"code":216,"language":98,"meta":23,"style":23},"var quote = new { Symbol = \"BTCUSDT\", Price = 67890.12m, Volume = 1234m };\nLOG.Info_Log(quote);\nLOG.Info_Log(\"market snapshot\", quote);  \u002F\u002F 含標頭訊息\n",[25,218,219,224,229],{"__ignoreMap":23},[28,220,221],{"class":30,"line":31},[28,222,223],{},"var quote = new { Symbol = \"BTCUSDT\", Price = 67890.12m, Volume = 1234m };\n",[28,225,226],{"class":30,"line":108},[28,227,228],{},"LOG.Info_Log(quote);\n",[28,230,231],{"class":30,"line":115},[28,232,233],{},"LOG.Info_Log(\"market snapshot\", quote);  \u002F\u002F 含標頭訊息\n",[54,235,236,237,239],{},"物件透過 ",[25,238,88],{}," 自動序列化。",[14,241,243],{"id":242},"_5-寫入例外","5. 寫入例外",[18,245,247],{"className":96,"code":246,"language":98,"meta":23,"style":23},"try { \u002F* ... *\u002F }\ncatch (Exception ex)\n{\n    LOG.Error_Log(\"operation failed\", ex);\n}\n",[25,248,249,254,259,264,269],{"__ignoreMap":23},[28,250,251],{"class":30,"line":31},[28,252,253],{},"try { \u002F* ... *\u002F }\n",[28,255,256],{"class":30,"line":108},[28,257,258],{},"catch (Exception ex)\n",[28,260,261],{"class":30,"line":115},[28,262,263],{},"{\n",[28,265,266],{"class":30,"line":163},[28,267,268],{},"    LOG.Error_Log(\"operation failed\", ex);\n",[28,270,271],{"class":30,"line":169},[28,272,273],{},"}\n",[54,275,276,277,60,280,60,283,60,286,289],{},"例外會被展開成結構化 JSON,含 ",[25,278,279],{},"Type",[25,281,282],{},"Message",[25,284,285],{},"StackTrace",[25,287,288],{},"InnerException","、反射出的非標準屬性。",[291,292],"hr",{},[14,294,296],{"id":295},"_6-配置一次性選填","6. 配置(一次性,選填)",[18,298,300],{"className":96,"code":299,"language":98,"meta":23,"style":23},"LOG.Configure(o =>\n{\n    o.KeepDays = -7;\n    o.SetFileSizeInMB(50);\n    o.EnableConsoleOutput = true;\n});\n",[25,301,302,307,311,316,321,326],{"__ignoreMap":23},[28,303,304],{"class":30,"line":31},[28,305,306],{},"LOG.Configure(o =>\n",[28,308,309],{"class":30,"line":108},[28,310,263],{},[28,312,313],{"class":30,"line":115},[28,314,315],{},"    o.KeepDays = -7;\n",[28,317,318],{"class":30,"line":163},[28,319,320],{},"    o.SetFileSizeInMB(50);\n",[28,322,323],{"class":30,"line":169},[28,324,325],{},"    o.EnableConsoleOutput = true;\n",[28,327,328],{"class":30,"line":175},[28,329,330],{},"});\n",[54,332,333,338,339,73],{},[75,334,335,337],{},[25,336,127],{}," 不可重入"," — 啟動時只能呼叫一次。完整選項列表見 ",[340,341,343],"a",{"href":342},".\u002Fconfiguration","配置選項",[291,345],{},[14,347,349],{"id":348},"_7-v31ndjson-輸出","7. v3.1:NDJSON 輸出",[18,351,353],{"className":96,"code":352,"language":98,"meta":23,"style":23},"LOG.Configure(o =>\n{\n    o.OutputFormat = LogOutputFormat.Json;   \u002F\u002F 輸出 NDJSON,不是純文字\n});\n\nLOG.Info_Log(\"price update\");\n",[25,354,355,359,363,368,372,376],{"__ignoreMap":23},[28,356,357],{"class":30,"line":31},[28,358,306],{},[28,360,361],{"class":30,"line":108},[28,362,263],{},[28,364,365],{"class":30,"line":115},[28,366,367],{},"    o.OutputFormat = LogOutputFormat.Json;   \u002F\u002F 輸出 NDJSON,不是純文字\n",[28,369,370],{"class":30,"line":163},[28,371,330],{},[28,373,374],{"class":30,"line":169},[28,375,112],{"emptyLinePlaceholder":111},[28,377,378],{"class":30,"line":175},[28,379,380],{},"LOG.Info_Log(\"price update\");\n",[54,382,383],{},"結果(每筆 log 一行):",[18,385,389],{"className":386,"code":387,"language":388,"meta":23,"style":23},"language-json shiki shiki-themes github-light","{\"ts\":1715587425123,\"lv\":\"Info\",\"nm\":\"\",\"tid\":12,\"msg\":\"price update\"}\n","json",[25,390,391],{"__ignoreMap":23},[28,392,393,397,400,403,406,409,412,414,417,419,422,424,427,429,432,434,437,439,442,444,447],{"class":30,"line":31},[28,394,396],{"class":395},"sgsFI","{",[28,398,399],{"class":48},"\"ts\"",[28,401,402],{"class":395},":",[28,404,405],{"class":48},"1715587425123",[28,407,408],{"class":395},",",[28,410,411],{"class":48},"\"lv\"",[28,413,402],{"class":395},[28,415,416],{"class":38},"\"Info\"",[28,418,408],{"class":395},[28,420,421],{"class":48},"\"nm\"",[28,423,402],{"class":395},[28,425,426],{"class":38},"\"\"",[28,428,408],{"class":395},[28,430,431],{"class":48},"\"tid\"",[28,433,402],{"class":395},[28,435,436],{"class":48},"12",[28,438,408],{"class":395},[28,440,441],{"class":48},"\"msg\"",[28,443,402],{"class":395},[28,445,446],{"class":38},"\"price update\"",[28,448,273],{"class":395},[54,450,451],{},"→ pandas \u002F DuckDB \u002F jq \u002F Grafana \u002F Elasticsearch 都原生支援 NDJSON。",[291,453],{},[14,455,457],{"id":456},"_8-v31自訂時間格式與-thread-name","8. v3.1:自訂時間格式與 thread name",[18,459,461],{"className":96,"code":460,"language":98,"meta":23,"style":23},"LOG.Configure(o =>\n{\n    o.TimeFormat = \"yyyy-MM-dd HH:mm:ss.fff\";  \u002F\u002F 自由格式 .NET DateTime 字串\n    o.ShowThreadId = true;\n    o.ShowThreadName = true;\n});\n\nThread.CurrentThread.Name = \"Worker-1\";\nLOG.Info_Log(\"doing work\");\n",[25,462,463,467,471,476,481,486,490,495,501],{"__ignoreMap":23},[28,464,465],{"class":30,"line":31},[28,466,306],{},[28,468,469],{"class":30,"line":108},[28,470,263],{},[28,472,473],{"class":30,"line":115},[28,474,475],{},"    o.TimeFormat = \"yyyy-MM-dd HH:mm:ss.fff\";  \u002F\u002F 自由格式 .NET DateTime 字串\n",[28,477,478],{"class":30,"line":163},[28,479,480],{},"    o.ShowThreadId = true;\n",[28,482,483],{"class":30,"line":169},[28,484,485],{},"    o.ShowThreadName = true;\n",[28,487,488],{"class":30,"line":175},[28,489,330],{},[28,491,493],{"class":30,"line":492},7,[28,494,112],{"emptyLinePlaceholder":111},[28,496,498],{"class":30,"line":497},8,[28,499,500],{},"Thread.CurrentThread.Name = \"Worker-1\";\n",[28,502,504],{"class":30,"line":503},9,[28,505,506],{},"LOG.Info_Log(\"doing work\");\n",[54,508,509],{},"結果:",[18,511,514],{"className":512,"code":513,"language":134},[132],"2026-05-14 10:23:45.123[T:7\u002FWorker-1] doing work\n",[25,515,513],{"__ignoreMap":23},[291,517],{},[14,519,521],{"id":520},"_9-v31報價-pipelinehft-tickquote-資料","9. v3.1:報價 pipeline(HFT tick\u002Fquote 資料)",[54,523,524,527,528,531],{},[75,525,526],{},"報價 pipeline"," 是專為高頻市場資料設計的獨立非同步管道。欄位命名對齊 Binance ",[25,529,530],{},"\u002Fapi\u002Fv3\u002Fticker\u002F24hr"," schema。",[18,533,535],{"className":96,"code":534,"language":98,"meta":23,"style":23},"LOG.Configure(o =>\n{\n    o.ConfigureQuote(q =>\n    {\n        q.Enable = true;                          \u002F\u002F ⚠ 必填 — 報價 pipeline 是 opt-in\n        q.OutputFormat = QuoteOutputFormat.Json;  \u002F\u002F 輸出 NDJSON\n        q.OnDropped = n => Console.WriteLine($\"dropped {n} quotes\");\n    });\n});\n\n\u002F\u002F 最簡 tick — 只填 last 價格\nLOG.Quote(\"BTCUSDT\", \"binance_spot\", DateTime.Now.Ticks, 67890.12m);\n\n\u002F\u002F 含 bid + ask 的盤口\nLOG.Quote(\"ETHUSDT\", \"binance_spot\", DateTime.Now.Ticks,\n          last: 3567.45m, bid: 3567.00m, ask: 3568.00m);\n\n\u002F\u002F 完整 ticker\nLOG.QuoteTicker(\"BTCUSDT\", \"binance_spot\", DateTime.Now.Ticks,\n                last: 67890.12m,\n                bid: 67889.0m, bidQty: 1.2m,\n                ask: 67891.0m, askQty: 0.8m,\n                open: 67500m, high: 68000m, low: 67200m,\n                volume: 12345.67m, quoteVolume: 838_000_000m);\n\n\u002F\u002F 含自訂欄位(Extras)\nvar extras = new Dictionary\u003Cstring, object>\n{\n    [\"funding\"] = 0.0001m,\n    [\"openInterest\"] = 12_345_678m,\n};\nLOG.QuoteTicker(\"BTCUSDT\", \"binance_perp\", DateTime.Now.Ticks,\n                last: 67890.12m, extras: extras,\n                bid: 67889m, ask: 67891m);\n",[25,536,537,541,545,550,555,560,565,570,575,579,584,590,596,601,607,613,619,624,630,636,642,648,654,660,666,671,677,683,688,694,700,706,712,718],{"__ignoreMap":23},[28,538,539],{"class":30,"line":31},[28,540,306],{},[28,542,543],{"class":30,"line":108},[28,544,263],{},[28,546,547],{"class":30,"line":115},[28,548,549],{},"    o.ConfigureQuote(q =>\n",[28,551,552],{"class":30,"line":163},[28,553,554],{},"    {\n",[28,556,557],{"class":30,"line":169},[28,558,559],{},"        q.Enable = true;                          \u002F\u002F ⚠ 必填 — 報價 pipeline 是 opt-in\n",[28,561,562],{"class":30,"line":175},[28,563,564],{},"        q.OutputFormat = QuoteOutputFormat.Json;  \u002F\u002F 輸出 NDJSON\n",[28,566,567],{"class":30,"line":492},[28,568,569],{},"        q.OnDropped = n => Console.WriteLine($\"dropped {n} quotes\");\n",[28,571,572],{"class":30,"line":497},[28,573,574],{},"    });\n",[28,576,577],{"class":30,"line":503},[28,578,330],{},[28,580,582],{"class":30,"line":581},10,[28,583,112],{"emptyLinePlaceholder":111},[28,585,587],{"class":30,"line":586},11,[28,588,589],{},"\u002F\u002F 最簡 tick — 只填 last 價格\n",[28,591,593],{"class":30,"line":592},12,[28,594,595],{},"LOG.Quote(\"BTCUSDT\", \"binance_spot\", DateTime.Now.Ticks, 67890.12m);\n",[28,597,599],{"class":30,"line":598},13,[28,600,112],{"emptyLinePlaceholder":111},[28,602,604],{"class":30,"line":603},14,[28,605,606],{},"\u002F\u002F 含 bid + ask 的盤口\n",[28,608,610],{"class":30,"line":609},15,[28,611,612],{},"LOG.Quote(\"ETHUSDT\", \"binance_spot\", DateTime.Now.Ticks,\n",[28,614,616],{"class":30,"line":615},16,[28,617,618],{},"          last: 3567.45m, bid: 3567.00m, ask: 3568.00m);\n",[28,620,622],{"class":30,"line":621},17,[28,623,112],{"emptyLinePlaceholder":111},[28,625,627],{"class":30,"line":626},18,[28,628,629],{},"\u002F\u002F 完整 ticker\n",[28,631,633],{"class":30,"line":632},19,[28,634,635],{},"LOG.QuoteTicker(\"BTCUSDT\", \"binance_spot\", DateTime.Now.Ticks,\n",[28,637,639],{"class":30,"line":638},20,[28,640,641],{},"                last: 67890.12m,\n",[28,643,645],{"class":30,"line":644},21,[28,646,647],{},"                bid: 67889.0m, bidQty: 1.2m,\n",[28,649,651],{"class":30,"line":650},22,[28,652,653],{},"                ask: 67891.0m, askQty: 0.8m,\n",[28,655,657],{"class":30,"line":656},23,[28,658,659],{},"                open: 67500m, high: 68000m, low: 67200m,\n",[28,661,663],{"class":30,"line":662},24,[28,664,665],{},"                volume: 12345.67m, quoteVolume: 838_000_000m);\n",[28,667,669],{"class":30,"line":668},25,[28,670,112],{"emptyLinePlaceholder":111},[28,672,674],{"class":30,"line":673},26,[28,675,676],{},"\u002F\u002F 含自訂欄位(Extras)\n",[28,678,680],{"class":30,"line":679},27,[28,681,682],{},"var extras = new Dictionary\u003Cstring, object>\n",[28,684,686],{"class":30,"line":685},28,[28,687,263],{},[28,689,691],{"class":30,"line":690},29,[28,692,693],{},"    [\"funding\"] = 0.0001m,\n",[28,695,697],{"class":30,"line":696},30,[28,698,699],{},"    [\"openInterest\"] = 12_345_678m,\n",[28,701,703],{"class":30,"line":702},31,[28,704,705],{},"};\n",[28,707,709],{"class":30,"line":708},32,[28,710,711],{},"LOG.QuoteTicker(\"BTCUSDT\", \"binance_perp\", DateTime.Now.Ticks,\n",[28,713,715],{"class":30,"line":714},33,[28,716,717],{},"                last: 67890.12m, extras: extras,\n",[28,719,721],{"class":30,"line":720},34,[28,722,723],{},"                bid: 67889m, ask: 67891m);\n",[54,725,726,727,730],{},"輸出檔案(每對 ",[25,728,729],{},"{bucket}_{symbol}"," 一檔):",[18,732,735],{"className":733,"code":734,"language":134},[132],"logs\u002F20260514\u002FQuotes\u002Fbinance_spot_BTCUSDT_Quote.json\nlogs\u002F20260514\u002FQuotes\u002Fbinance_spot_ETHUSDT_Quote.json\nlogs\u002F20260514\u002FQuotes\u002Fbinance_perp_BTCUSDT_Quote.json\n",[25,736,734],{"__ignoreMap":23},[54,738,739],{},"每行是一筆 NDJSON 記錄:",[18,741,743],{"className":386,"code":742,"language":388,"meta":23,"style":23},"{\"ts\":1715587425123,\"symbol\":\"BTCUSDT\",\"bucket\":\"binance_spot\",\"last\":67890.12,\"bid\":67889.0,\"ask\":67891.0,\"extras\":{\"funding\":0.0001}}\n",[25,744,745],{"__ignoreMap":23},[28,746,747,749,751,753,755,757,760,762,765,767,770,772,775,777,780,782,785,787,790,792,795,797,800,802,805,807,810,813,816,818,821],{"class":30,"line":31},[28,748,396],{"class":395},[28,750,399],{"class":48},[28,752,402],{"class":395},[28,754,405],{"class":48},[28,756,408],{"class":395},[28,758,759],{"class":48},"\"symbol\"",[28,761,402],{"class":395},[28,763,764],{"class":38},"\"BTCUSDT\"",[28,766,408],{"class":395},[28,768,769],{"class":48},"\"bucket\"",[28,771,402],{"class":395},[28,773,774],{"class":38},"\"binance_spot\"",[28,776,408],{"class":395},[28,778,779],{"class":48},"\"last\"",[28,781,402],{"class":395},[28,783,784],{"class":48},"67890.12",[28,786,408],{"class":395},[28,788,789],{"class":48},"\"bid\"",[28,791,402],{"class":395},[28,793,794],{"class":48},"67889.0",[28,796,408],{"class":395},[28,798,799],{"class":48},"\"ask\"",[28,801,402],{"class":395},[28,803,804],{"class":48},"67891.0",[28,806,408],{"class":395},[28,808,809],{"class":48},"\"extras\"",[28,811,812],{"class":395},":{",[28,814,815],{"class":48},"\"funding\"",[28,817,402],{"class":395},[28,819,820],{"class":48},"0.0001",[28,822,823],{"class":395},"}}\n",[291,825],{},[14,827,828],{"id":828},"下一步",[830,831,832,838,845],"ul",{},[833,834,835,837],"li",{},[340,836,343],{"href":342}," — 完整選項表",[833,839,840,844],{},[340,841,843],{"href":842},".\u002Fapi","API 參考"," — 所有公開方法、struct、enum",[833,846,847,851],{},[340,848,850],{"href":849},".\u002Fasync-pipeline","HFT 非同步架構"," — 內部 pipeline 設計",[54,853,854],{},"頂層頁面(請從網站導覽列進入):",[830,856,857,863,873],{},[833,858,859,862],{},[75,860,861],{},"Benchmark"," — 與 ZLogger \u002F ZeroLog \u002F Serilog 比較",[833,864,865,868,869,872],{},[75,866,867],{},"v2.x 升級指南"," — 給原 ",[25,870,871],{},"Ozakboy.NLOG"," 使用者",[833,874,875,878],{},[75,876,877],{},"版本歷史"," — 版本變更記錄",[880,881,882],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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 pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":23,"searchDepth":108,"depth":115,"links":884},[885,886,887,888,890,891,892,893,894,895,896],{"id":16,"depth":108,"text":16},{"id":92,"depth":108,"text":93},{"id":139,"depth":108,"text":140},{"id":181,"depth":108,"text":889},"3. 用 CustomName_Log 做 per-symbol 檔案分桶",{"id":212,"depth":108,"text":213},{"id":242,"depth":108,"text":243},{"id":295,"depth":108,"text":296},{"id":348,"depth":108,"text":349},{"id":456,"depth":108,"text":457},{"id":520,"depth":108,"text":521},{"id":828,"depth":108,"text":828},"安裝 OzaLog v3.1,一分鐘內寫下第一行 log。含報價 pipeline 範例。","md",{},"\u002Fzh-tw\u002Fgetting-started",{"title":6,"description":897},"zh-TW\u002Fgetting-started","O27VsFeVyWOPU55GTd-We8KrNFyeRU-Yi8elQwAUsuc",{"matched":905,"target":906,"all":907},"fallback (.all() + manual match)","\u002Fzh-TW\u002Fgetting-started",[908,913,918,923,928,933,938,943,947,951,956,960,964,965],{"path":909,"id":910,"stem":911,"title":912},"\u002Fen\u002Fapi","content\u002Fen\u002Fapi.md","en\u002Fapi","API Reference",{"path":914,"id":915,"stem":916,"title":917},"\u002Fen\u002Fasync-pipeline","content\u002Fen\u002Fasync-pipeline.md","en\u002Fasync-pipeline","HFT Async Architecture",{"path":919,"id":920,"stem":921,"title":922},"\u002Fen\u002Fbenchmarks","content\u002Fen\u002Fbenchmarks.md","en\u002Fbenchmarks","Benchmarks",{"path":924,"id":925,"stem":926,"title":927},"\u002Fen\u002Fchangelog","content\u002Fen\u002Fchangelog.md","en\u002Fchangelog","Changelog",{"path":929,"id":930,"stem":931,"title":932},"\u002Fen\u002Fconfiguration","content\u002Fen\u002Fconfiguration.md","en\u002Fconfiguration","Configuration",{"path":934,"id":935,"stem":936,"title":937},"\u002Fen\u002Fgetting-started","content\u002Fen\u002Fgetting-started.md","en\u002Fgetting-started","Getting Started",{"path":939,"id":940,"stem":941,"title":942},"\u002Fen\u002Fmigration","content\u002Fen\u002Fmigration.md","en\u002Fmigration","Migration Guide",{"path":944,"id":945,"stem":946,"title":843},"\u002Fzh-tw\u002Fapi","content\u002Fzh-TW\u002Fapi.md","zh-TW\u002Fapi",{"path":948,"id":949,"stem":950,"title":850},"\u002Fzh-tw\u002Fasync-pipeline","content\u002Fzh-TW\u002Fasync-pipeline.md","zh-TW\u002Fasync-pipeline",{"path":952,"id":953,"stem":954,"title":955},"\u002Fzh-tw\u002Fbenchmarks","content\u002Fzh-TW\u002Fbenchmarks.md","zh-TW\u002Fbenchmarks","效能對比",{"path":957,"id":958,"stem":959,"title":877},"\u002Fzh-tw\u002Fchangelog","content\u002Fzh-TW\u002Fchangelog.md","zh-TW\u002Fchangelog",{"path":961,"id":962,"stem":963,"title":343},"\u002Fzh-tw\u002Fconfiguration","content\u002Fzh-TW\u002Fconfiguration.md","zh-TW\u002Fconfiguration",{"path":900,"id":5,"stem":902,"title":6},{"path":966,"id":967,"stem":968,"title":969},"\u002Fzh-tw\u002Fmigration","content\u002Fzh-TW\u002Fmigration.md","zh-TW\u002Fmigration","升級指南",1778734455994]