[{"data":1,"prerenderedAt":1664},["ShallowReactive",2],{"content-zh-TW-configuration":3},{"doc":4,"debug":1595},{"id":5,"title":6,"body":7,"description":1588,"extension":1589,"meta":1590,"navigation":57,"path":1591,"seo":1592,"stem":1593,"__hash__":1594},"content\u002Fzh-TW\u002Fconfiguration.md","配置選項",{"type":8,"value":9,"toc":1569},"minimark",[10,13,35,101,104,113,118,259,263,454,458,599,603,646,663,670,695,704,712,719,811,813,821,833,910,1128,1141,1143,1151,1157,1242,1252,1254,1261,1558,1565],[11,12,6],"h1",{"id":6},[14,15,16,17,21,22,26,27,30,31,34],"p",{},"所有配置都在程式啟動時透過 ",[18,19,20],"code",{},"LOG.Configure(...)"," ",[23,24,25],"strong",{},"一次性","設定。此呼叫",[23,28,29],{},"不可重入"," — 第二次呼叫拋 ",[18,32,33],{},"InvalidOperationException","。若完全省略,首次寫 log 會自動以預設值初始化。",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-csharp shiki shiki-themes github-light","using OzaLog;\n\nLOG.Configure(o =>\n{\n    o.KeepDays = -7;\n    o.SetFileSizeInMB(50);\n    o.OutputFormat = LogOutputFormat.Json;\n    o.ConfigureQuote(q => q.Enable = true);\n});\n","csharp","",[18,43,44,52,59,65,71,77,83,89,95],{"__ignoreMap":41},[45,46,49],"span",{"class":47,"line":48},"line",1,[45,50,51],{},"using OzaLog;\n",[45,53,55],{"class":47,"line":54},2,[45,56,58],{"emptyLinePlaceholder":57},true,"\n",[45,60,62],{"class":47,"line":61},3,[45,63,64],{},"LOG.Configure(o =>\n",[45,66,68],{"class":47,"line":67},4,[45,69,70],{},"{\n",[45,72,74],{"class":47,"line":73},5,[45,75,76],{},"    o.KeepDays = -7;\n",[45,78,80],{"class":47,"line":79},6,[45,81,82],{},"    o.SetFileSizeInMB(50);\n",[45,84,86],{"class":47,"line":85},7,[45,87,88],{},"    o.OutputFormat = LogOutputFormat.Json;\n",[45,90,92],{"class":47,"line":91},8,[45,93,94],{},"    o.ConfigureQuote(q => q.Enable = true);\n",[45,96,98],{"class":47,"line":97},9,[45,99,100],{},"});\n",[102,103],"hr",{},[105,106,108,109,112],"h2",{"id":107},"_1-logoptions-主-logger","1. ",[18,110,111],{},"LogOptions"," — 主 logger",[114,115,117],"h3",{"id":116},"_11-檔案輸出","1.1 檔案輸出",[119,120,121,140],"table",{},[122,123,124],"thead",{},[125,126,127,131,134,137],"tr",{},[128,129,130],"th",{},"選項",[128,132,133],{},"型別",[128,135,136],{},"預設",[128,138,139],{},"說明",[141,142,143,171,196,214,241],"tbody",{},[125,144,145,151,156,161],{},[146,147,148],"td",{},[18,149,150],{},"KeepDays",[146,152,153],{},[18,154,155],{},"int",[146,157,158],{},[18,159,160],{},"-3",[146,162,163,166,167,170],{},[23,164,165],{},"必須是負數","。保留幾天份的 log。超過的日期子目錄會被背景 ",[18,168,169],{},"LogRetentionCleaner"," 每 60 秒掃一次刪除。",[125,172,173,178,183,189],{},[146,174,175],{},[18,176,177],{},"MaxFileSize",[146,179,180],{},[18,181,182],{},"long",[146,184,185,188],{},[18,186,187],{},"50 * 1024 * 1024"," (50 MB)",[146,190,191,192,195],{},"檔案 size-based 分割閾值。超過後下一筆寫到 ",[18,193,194],{},"{name}_part2_Log.{ext}","。",[125,197,198,203,206,209],{},[146,199,200],{},[18,201,202],{},"SetFileSizeInMB(int megabytes)",[146,204,205],{},"method",[146,207,208],{},"—",[146,210,211,213],{},[18,212,177],{}," 的便利 setter。",[125,215,216,221,226,231],{},[146,217,218],{},[18,219,220],{},"LogPath",[146,222,223],{},[18,224,225],{},"string",[146,227,228],{},[18,229,230],{},"\"logs\"",[146,232,233,234,237,238,195],{},"位於 ",[18,235,236],{},"AppDomain.CurrentDomain.BaseDirectory"," 之下的根目錄。完整路徑為 ",[18,239,240],{},"{baseDir}\u002F{LogPath}\u002F{yyyyMMdd}\u002F{TypeDirectories.*}\u002F{name}_Log.{ext}",[125,242,243,248,253,256],{},[146,244,245],{},[18,246,247],{},"TypeDirectories",[146,249,250],{},[18,251,252],{},"LogTypeDirectories",[146,254,255],{},"見 §1.5",[146,257,258],{},"各 LogLevel 對應的子目錄設定。",[114,260,262],{"id":261},"_12-輸出格式-v31","1.2 輸出格式 (v3.1+)",[119,264,265,277],{},[122,266,267],{},[125,268,269,271,273,275],{},[128,270,130],{},[128,272,133],{},[128,274,136],{},[128,276,139],{},[141,278,279,315,350,385,425],{},[125,280,281,286,291,296],{},[146,282,283],{},[18,284,285],{},"OutputFormat",[146,287,288],{},[18,289,290],{},"LogOutputFormat",[146,292,293],{},[18,294,295],{},"Txt",[146,297,298,299,301,302,305,306,309,310,195],{},"全域選擇:",[18,300,295],{}," \u002F ",[18,303,304],{},"Log","(內容相同,副檔名不同) \u002F ",[18,307,308],{},"Json","(NDJSON)。詳見 ",[311,312,314],"a",{"href":313},".\u002Fapi#4-logoutputformat-enum-v31","API §4",[125,316,317,322,326,331],{},[146,318,319],{},[18,320,321],{},"TimeFormat",[146,323,324],{},[18,325,225],{},[146,327,328],{},[18,329,330],{},"\"HH:mm:ss.fff\"",[146,332,333,334,337,338,340,341,343,344,349],{},"自由格式的 .NET ",[18,335,336],{},"DateTime"," 字串,用於 ",[18,339,295],{},"\u002F",[18,342,304],{}," 模式的訊息前綴。",[23,345,346,348],{},[18,347,308],{}," 模式下不適用","(JSON 一律走 epoch_ms)。無效格式自動 fallback 為預設。",[125,351,352,357,362,367],{},[146,353,354],{},[18,355,356],{},"ShowThreadId",[146,358,359],{},[18,360,361],{},"bool",[146,363,364],{},[18,365,366],{},"true",[146,368,369,370,340,372,374,375,378,379,374,381,384],{},"切換 ",[18,371,295],{},[18,373,304],{}," 中的 ",[18,376,377],{},"[T:tid]"," 前綴;切換 ",[18,380,308],{},[18,382,383],{},"tid"," 欄位。",[125,386,387,392,396,401],{},[146,388,389],{},[18,390,391],{},"ShowThreadName",[146,393,394],{},[18,395,361],{},[146,397,398],{},[18,399,400],{},"false",[146,402,403,404,407,408,340,410,412,413,415,416,418,419,421,422,195],{},"切換 thread name 顯示。若呼叫端執行緒無 ",[18,405,406],{},"Thread.Name",",整個 thread 區段一律省略。在 ",[18,409,295],{},[18,411,304],{}," 模式下,若 ",[18,414,356],{}," 與 ",[18,417,391],{}," 都為 ",[18,420,366],{},",輸出組合為 ",[18,423,424],{},"[T:tid\u002FName]",[125,426,427,432,436,440],{},[146,428,429],{},[18,430,431],{},"HighPrecisionTimestamp",[146,433,434],{},[18,435,361],{},[146,437,438],{},[18,439,400],{},[146,441,442,443,446,447,449,450,453],{},"Opt-in ",[18,444,445],{},"Stopwatch","-hybrid 模式,提供 µs 級精度。呼叫端 ticks 讀取從 ~5 ns 增加到 ~30 ns。只有當你的 ",[18,448,321],{}," 用了比 ",[18,451,452],{},".fff"," 更精細的精度時才有意義。",[114,455,457],{"id":456},"_13-非同步管線行為","1.3 非同步管線行為",[119,459,460,472],{},[122,461,462],{},[125,463,464,466,468,470],{},[128,465,130],{},[128,467,133],{},[128,469,136],{},[128,471,139],{},[141,473,474,495,519,547,575],{},[125,475,476,481,485,489],{},[146,477,478],{},[18,479,480],{},"EnableAsyncLogging",[146,482,483],{},[18,484,361],{},[146,486,487],{},[18,488,366],{},[146,490,491,492,494],{},"若 ",[18,493,400],{},",呼叫端執行緒同步寫入(無批次、無 FileStream 池 — HFT 場景較慢但邏輯較直觀)。",[125,496,497,502,506,510],{},[146,498,499],{},[18,500,501],{},"EnableConsoleOutput",[146,503,504],{},[18,505,361],{},[146,507,508],{},[18,509,366],{},[146,511,491,512,514,515,518],{},[18,513,366],{},",每筆 log 也會在呼叫端執行緒 ",[18,516,517],{},"Console.WriteLine"," 一次。",[125,520,521,526,530,540],{},[146,522,523],{},[18,524,525],{},"MaxOpenFileStreams",[146,527,528],{},[18,529,155],{},[146,531,532,535,536,539],{},[18,533,534],{},"100","(範圍 ",[18,537,538],{},"[4, 4096]",")",[146,541,542,543,546],{},"持久化 ",[18,544,545],{},"FileStreamPool"," 的 LRU 上限。超過時關閉最久未寫入的 stream。",[125,548,549,554,558,565],{},[146,550,551],{},[18,552,553],{},"DiskFlushIntervalMs",[146,555,556],{},[18,557,155],{},[146,559,560,535,562,539],{},[18,561,534],{},[18,563,564],{},"[10, 10000]",[146,566,567,570,571,574],{},[18,568,569],{},"FileStreamPool.FlushAll()"," 的呼叫週期 — 緩衝寫入落盤(但不做 ",[18,572,573],{},"fsync",",由 OS 決定 write-back 時機)。",[125,576,577,582,587,592],{},[146,578,579],{},[18,580,581],{},"OnDropped",[146,583,584],{},[18,585,586],{},"Action",[146,588,589],{},[18,590,591],{},"null",[146,593,594,595,598],{},"佇列滿並 drop oldest 時觸發",[23,596,597],{},"每筆一次","的 callback。Body 必須極輕量(在 dispatcher 執行緒呼叫)。",[114,600,602],{"id":601},"_14-全域意外攔截opt-in","1.4 全域意外攔截(opt-in)",[119,604,605,617],{},[122,606,607],{},[125,608,609,611,613,615],{},[128,610,130],{},[128,612,133],{},[128,614,136],{},[128,616,139],{},[141,618,619],{},[125,620,621,626,630,634],{},[146,622,623],{},[18,624,625],{},"EnableGlobalExceptionCapture",[146,627,628],{},[18,629,361],{},[146,631,632],{},[18,633,400],{},[146,635,491,636,638,639,415,642,645],{},[18,637,366],{},",訂閱 ",[18,640,641],{},"AppDomain.UnhandledException",[18,643,644],{},"TaskScheduler.UnobservedTaskException",",以 Fatal 級別同步 + immediate flush 寫入。預設關閉以避免與宿主應用既有 handler 衝突。",[647,648,649],"blockquote",{},[14,650,651,654,655,658,659,662],{},[23,652,653],{},"不會","攔截 WPF ",[18,656,657],{},"DispatcherUnhandledException","、WinForms ",[18,660,661],{},"ThreadException","、ASP.NET Core middleware 例外 — 函式庫層級無法存取這些 framework 物件。宿主應用需自行 hook。",[114,664,666,667,669],{"id":665},"_15-logtypedirectories-各級別子目錄","1.5 ",[18,668,252],{}," — 各級別子目錄",[36,671,673],{"className":38,"code":672,"language":40,"meta":41,"style":41},"o.TypeDirectories.DirectoryPath = \"LogFiles\";   \u002F\u002F 級別專屬路徑為 null 時的預設\no.TypeDirectories.ErrorPath     = \"ErrorLogs\";  \u002F\u002F Error 級別走獨立資料夾\no.TypeDirectories.FatalPath     = \"FatalLogs\";\n\u002F\u002F 另有 TracePath \u002F DebugPath \u002F InfoPath \u002F WarnPath \u002F CustomPath\n",[18,674,675,680,685,690],{"__ignoreMap":41},[45,676,677],{"class":47,"line":48},[45,678,679],{},"o.TypeDirectories.DirectoryPath = \"LogFiles\";   \u002F\u002F 級別專屬路徑為 null 時的預設\n",[45,681,682],{"class":47,"line":54},[45,683,684],{},"o.TypeDirectories.ErrorPath     = \"ErrorLogs\";  \u002F\u002F Error 級別走獨立資料夾\n",[45,686,687],{"class":47,"line":61},[45,688,689],{},"o.TypeDirectories.FatalPath     = \"FatalLogs\";\n",[45,691,692],{"class":47,"line":67},[45,693,694],{},"\u002F\u002F 另有 TracePath \u002F DebugPath \u002F InfoPath \u002F WarnPath \u002F CustomPath\n",[14,696,697,698,700,701,195],{},"級別專屬路徑為 ",[18,699,591],{}," 時,fallback 為 ",[18,702,703],{},"DirectoryPath",[114,705,707,708,711],{"id":706},"_16-asynclogoptions-dispatcher-調校","1.6 ",[18,709,710],{},"AsyncLogOptions"," — dispatcher 調校",[14,713,714,715,718],{},"透過 ",[18,716,717],{},"o.ConfigureAsync(a => { ... })"," 設定。",[119,720,721,736],{},[122,722,723],{},[125,724,725,727,729,731,734],{},[128,726,130],{},[128,728,133],{},[128,730,136],{},[128,732,733],{},"範圍",[128,735,139],{},[141,737,738,761,788],{},[125,739,740,745,749,753,758],{},[146,741,742],{},[18,743,744],{},"MaxBatchSize",[146,746,747],{},[18,748,155],{},[146,750,751],{},[18,752,534],{},[146,754,755],{},[18,756,757],{},"[1, 1000]",[146,759,760],{},"dispatcher 每次喚醒最多排出的項目數。",[125,762,763,768,772,777,782],{},[146,764,765],{},[18,766,767],{},"MaxQueueSize",[146,769,770],{},[18,771,155],{},[146,773,774],{},[18,775,776],{},"10000",[146,778,779],{},[18,780,781],{},"[1000, 100000]",[146,783,784,785,787],{},"佇列容量。超過時 drop oldest + 觸發 ",[18,786,581],{}," callback。",[125,789,790,795,799,804,808],{},[146,791,792],{},[18,793,794],{},"FlushIntervalMs",[146,796,797],{},[18,798,155],{},[146,800,801],{},[18,802,803],{},"1000",[146,805,806],{},[18,807,564],{},[146,809,810],{},"dispatcher 喚醒間隔。沒有 signal 進來時,semaphore wait 等到此間隔逾時。",[102,812],{},[105,814,816,817,820],{"id":815},"_2-quoteoptions-報價-pipeline-v31","2. ",[18,818,819],{},"QuoteOptions"," — 報價 pipeline (v3.1+)",[14,822,714,823,718,826,832],{},[18,824,825],{},"o.ConfigureQuote(q => { ... })",[23,827,828,829],{},"預設 ",[18,830,831],{},"Enable = false"," — 報價 pipeline 必須明確 opt-in。",[36,834,836],{"className":38,"code":835,"language":40,"meta":41,"style":41},"LOG.Configure(o =>\n{\n    o.ConfigureQuote(q =>\n    {\n        q.Enable = true;\n        q.OutputFormat = QuoteOutputFormat.Json;\n        q.QuotePath = \"Quotes\";\n        q.MaxOpenStreams = 500;\n        q.MaxQueueSize = 50_000;\n        q.MaxBatchSize = 500;\n        q.FlushIntervalMs = 100;\n        q.OnDropped = droppedCount => MyMetrics.RecordDrops(droppedCount);\n    });\n});\n",[18,837,838,842,846,851,856,861,866,871,876,881,887,893,899,905],{"__ignoreMap":41},[45,839,840],{"class":47,"line":48},[45,841,64],{},[45,843,844],{"class":47,"line":54},[45,845,70],{},[45,847,848],{"class":47,"line":61},[45,849,850],{},"    o.ConfigureQuote(q =>\n",[45,852,853],{"class":47,"line":67},[45,854,855],{},"    {\n",[45,857,858],{"class":47,"line":73},[45,859,860],{},"        q.Enable = true;\n",[45,862,863],{"class":47,"line":79},[45,864,865],{},"        q.OutputFormat = QuoteOutputFormat.Json;\n",[45,867,868],{"class":47,"line":85},[45,869,870],{},"        q.QuotePath = \"Quotes\";\n",[45,872,873],{"class":47,"line":91},[45,874,875],{},"        q.MaxOpenStreams = 500;\n",[45,877,878],{"class":47,"line":97},[45,879,880],{},"        q.MaxQueueSize = 50_000;\n",[45,882,884],{"class":47,"line":883},10,[45,885,886],{},"        q.MaxBatchSize = 500;\n",[45,888,890],{"class":47,"line":889},11,[45,891,892],{},"        q.FlushIntervalMs = 100;\n",[45,894,896],{"class":47,"line":895},12,[45,897,898],{},"        q.OnDropped = droppedCount => MyMetrics.RecordDrops(droppedCount);\n",[45,900,902],{"class":47,"line":901},13,[45,903,904],{},"    });\n",[45,906,908],{"class":47,"line":907},14,[45,909,100],{},[119,911,912,926],{},[122,913,914],{},[125,915,916,918,920,922,924],{},[128,917,130],{},[128,919,133],{},[128,921,136],{},[128,923,733],{},[128,925,139],{},[141,927,928,958,986,1011,1038,1061,1083,1104],{},[125,929,930,935,939,943,945],{},[146,931,932],{},[18,933,934],{},"Enable",[146,936,937],{},[18,938,361],{},[146,940,941],{},[18,942,400],{},[146,944,208],{},[146,946,947,950,951,953,954,957],{},[23,948,949],{},"必填","。若 ",[18,952,400],{},",所有 ",[18,955,956],{},"LOG.Quote(...)"," 呼叫都靜默 no-op,也不啟動背景執行緒。",[125,959,960,964,969,973,975],{},[146,961,962],{},[18,963,285],{},[146,965,966],{},[18,967,968],{},"QuoteOutputFormat",[146,970,971],{},[18,972,295],{},[146,974,208],{},[146,976,977,301,979,301,981,983,984,195],{},[18,978,295],{},[18,980,304],{},[18,982,308],{},"。獨立於主 logger 的 ",[18,985,285],{},[125,987,988,993,997,1002,1004],{},[146,989,990],{},[18,991,992],{},"QuotePath",[146,994,995],{},[18,996,225],{},[146,998,999],{},[18,1000,1001],{},"\"Quotes\"",[146,1003,208],{},[146,1005,1006,1007,1010],{},"報價檔案在 ",[18,1008,1009],{},"{LogPath}\u002F{yyyyMMdd}\u002F"," 下的子目錄。",[125,1012,1013,1018,1022,1027,1031],{},[146,1014,1015],{},[18,1016,1017],{},"MaxOpenStreams",[146,1019,1020],{},[18,1021,155],{},[146,1023,1024],{},[18,1025,1026],{},"500",[146,1028,1029],{},[18,1030,538],{},[146,1032,1033,1034,1037],{},"獨立 ",[18,1035,1036],{},"QuoteFileStreamPool"," 的 LRU 上限。比主 logger 高,因為加密貨幣\u002F股票的 symbol 數量動輒上千。",[125,1039,1040,1044,1048,1053,1058],{},[146,1041,1042],{},[18,1043,767],{},[146,1045,1046],{},[18,1047,155],{},[146,1049,1050],{},[18,1051,1052],{},"50000",[146,1054,1055],{},[18,1056,1057],{},"[1000, 1_000_000]",[146,1059,1060],{},"報價佇列容量。Drop-oldest on overflow。比主 logger 高,因為報價吞吐量通常是普通 log 的 100×–1000×。",[125,1062,1063,1067,1071,1075,1080],{},[146,1064,1065],{},[18,1066,744],{},[146,1068,1069],{},[18,1070,155],{},[146,1072,1073],{},[18,1074,1026],{},[146,1076,1077],{},[18,1078,1079],{},"[1, 10000]",[146,1081,1082],{},"dispatcher 每次喚醒最多排出的記錄數。",[125,1084,1085,1089,1093,1097,1101],{},[146,1086,1087],{},[18,1088,794],{},[146,1090,1091],{},[18,1092,155],{},[146,1094,1095],{},[18,1096,534],{},[146,1098,1099],{},[18,1100,564],{},[146,1102,1103],{},"dispatcher 喚醒間隔。",[125,1105,1106,1110,1115,1119,1121],{},[146,1107,1108],{},[18,1109,581],{},[146,1111,1112],{},[18,1113,1114],{},"Action\u003Clong>",[146,1116,1117],{},[18,1118,591],{},[146,1120,208],{},[146,1122,1123,1124,1127],{},"drop 發生時觸發。參數是",[23,1125,1126],{},"自上次 callback 以來新丟棄的筆數","(非累計)。",[647,1129,1130],{},[14,1131,1132,1133,415,1135,1137,1138,1140],{},"報價 pipeline 沿用主 logger 的 ",[18,1134,150],{},[18,1136,177],{}," 進行保留與檔案分割。報價檔案會被同一個 ",[18,1139,169],{}," 清理。",[102,1142],{},[105,1144,1146,1147,1150],{"id":1145},"_3-透過-loggetcurrentoptions-讀回","3. 透過 ",[18,1148,1149],{},"LOG.GetCurrentOptions()"," 讀回",[14,1152,1153,1156],{},[18,1154,1155],{},"Configure"," 後可透過唯讀視圖檢視執行中設定:",[36,1158,1160],{"className":38,"code":1159,"language":40,"meta":41,"style":41},"var current = LOG.GetCurrentOptions();\n\n\u002F\u002F 主 logger\nConsole.WriteLine(current.OutputFormat);                  \u002F\u002F Json\nConsole.WriteLine(current.TimeFormat);                    \u002F\u002F \"HH:mm:ss.fff\"\nConsole.WriteLine(current.ShowThreadId);                  \u002F\u002F true\nConsole.WriteLine(current.ShowThreadName);                \u002F\u002F false\nConsole.WriteLine(current.HighPrecisionTimestamp);        \u002F\u002F false\nConsole.WriteLine(current.MaxOpenFileStreams);            \u002F\u002F 100\nConsole.WriteLine(current.AsyncOptions.MaxQueueSize);     \u002F\u002F 10000\n\n\u002F\u002F 報價 pipeline\nConsole.WriteLine(current.QuoteOptions.Enable);           \u002F\u002F true\nConsole.WriteLine(current.QuoteOptions.OutputFormat);     \u002F\u002F Json\nConsole.WriteLine(current.QuoteOptions.QuotePath);        \u002F\u002F \"Quotes\"\nConsole.WriteLine(current.QuoteOptions.MaxOpenStreams);   \u002F\u002F 500\n",[18,1161,1162,1167,1171,1176,1181,1186,1191,1196,1201,1206,1211,1215,1220,1225,1230,1236],{"__ignoreMap":41},[45,1163,1164],{"class":47,"line":48},[45,1165,1166],{},"var current = LOG.GetCurrentOptions();\n",[45,1168,1169],{"class":47,"line":54},[45,1170,58],{"emptyLinePlaceholder":57},[45,1172,1173],{"class":47,"line":61},[45,1174,1175],{},"\u002F\u002F 主 logger\n",[45,1177,1178],{"class":47,"line":67},[45,1179,1180],{},"Console.WriteLine(current.OutputFormat);                  \u002F\u002F Json\n",[45,1182,1183],{"class":47,"line":73},[45,1184,1185],{},"Console.WriteLine(current.TimeFormat);                    \u002F\u002F \"HH:mm:ss.fff\"\n",[45,1187,1188],{"class":47,"line":79},[45,1189,1190],{},"Console.WriteLine(current.ShowThreadId);                  \u002F\u002F true\n",[45,1192,1193],{"class":47,"line":85},[45,1194,1195],{},"Console.WriteLine(current.ShowThreadName);                \u002F\u002F false\n",[45,1197,1198],{"class":47,"line":91},[45,1199,1200],{},"Console.WriteLine(current.HighPrecisionTimestamp);        \u002F\u002F false\n",[45,1202,1203],{"class":47,"line":97},[45,1204,1205],{},"Console.WriteLine(current.MaxOpenFileStreams);            \u002F\u002F 100\n",[45,1207,1208],{"class":47,"line":883},[45,1209,1210],{},"Console.WriteLine(current.AsyncOptions.MaxQueueSize);     \u002F\u002F 10000\n",[45,1212,1213],{"class":47,"line":889},[45,1214,58],{"emptyLinePlaceholder":57},[45,1216,1217],{"class":47,"line":895},[45,1218,1219],{},"\u002F\u002F 報價 pipeline\n",[45,1221,1222],{"class":47,"line":901},[45,1223,1224],{},"Console.WriteLine(current.QuoteOptions.Enable);           \u002F\u002F true\n",[45,1226,1227],{"class":47,"line":907},[45,1228,1229],{},"Console.WriteLine(current.QuoteOptions.OutputFormat);     \u002F\u002F Json\n",[45,1231,1233],{"class":47,"line":1232},15,[45,1234,1235],{},"Console.WriteLine(current.QuoteOptions.QuotePath);        \u002F\u002F \"Quotes\"\n",[45,1237,1239],{"class":47,"line":1238},16,[45,1240,1241],{},"Console.WriteLine(current.QuoteOptions.MaxOpenStreams);   \u002F\u002F 500\n",[14,1243,1244,1245,301,1248,1251],{},"所有讀回的值都包在 ",[18,1246,1247],{},"ReadOnlyLogOptions",[18,1249,1250],{},"ReadOnlyQuoteOptions"," 內 — 消費者無法透過此視圖修改執行中設定。",[102,1253],{},[105,1255,1257,1258,1260],{"id":1256},"_4-預設值總表未呼叫-logconfigure-時","4. 預設值總表(未呼叫 ",[18,1259,20],{}," 時)",[119,1262,1263,1275],{},[122,1264,1265],{},[125,1266,1267,1270,1273],{},[128,1268,1269],{},"類別",[128,1271,1272],{},"設定",[128,1274,136],{},[141,1276,1277,1290,1301,1313,1327,1340,1352,1364,1376,1388,1401,1413,1425,1437,1450,1463,1476,1493,1506,1519,1532,1545],{},[125,1278,1279,1282,1286],{},[146,1280,1281],{},"檔案",[146,1283,1284],{},[18,1285,150],{},[146,1287,1288],{},[18,1289,160],{},[125,1291,1292,1294,1298],{},[146,1293,1281],{},[146,1295,1296],{},[18,1297,177],{},[146,1299,1300],{},"50 MB",[125,1302,1303,1305,1309],{},[146,1304,1281],{},[146,1306,1307],{},[18,1308,220],{},[146,1310,1311],{},[18,1312,230],{},[125,1314,1315,1317,1322],{},[146,1316,1281],{},[146,1318,1319],{},[18,1320,1321],{},"TypeDirectories.DirectoryPath",[146,1323,1324],{},[18,1325,1326],{},"\"LogFiles\"",[125,1328,1329,1332,1336],{},[146,1330,1331],{},"格式",[146,1333,1334],{},[18,1335,285],{},[146,1337,1338],{},[18,1339,295],{},[125,1341,1342,1344,1348],{},[146,1343,1331],{},[146,1345,1346],{},[18,1347,321],{},[146,1349,1350],{},[18,1351,330],{},[125,1353,1354,1356,1360],{},[146,1355,1331],{},[146,1357,1358],{},[18,1359,356],{},[146,1361,1362],{},[18,1363,366],{},[125,1365,1366,1368,1372],{},[146,1367,1331],{},[146,1369,1370],{},[18,1371,391],{},[146,1373,1374],{},[18,1375,400],{},[125,1377,1378,1380,1384],{},[146,1379,1331],{},[146,1381,1382],{},[18,1383,431],{},[146,1385,1386],{},[18,1387,400],{},[125,1389,1390,1393,1397],{},[146,1391,1392],{},"異步",[146,1394,1395],{},[18,1396,480],{},[146,1398,1399],{},[18,1400,366],{},[125,1402,1403,1405,1409],{},[146,1404,1392],{},[146,1406,1407],{},[18,1408,501],{},[146,1410,1411],{},[18,1412,366],{},[125,1414,1415,1417,1421],{},[146,1416,1392],{},[146,1418,1419],{},[18,1420,525],{},[146,1422,1423],{},[18,1424,534],{},[125,1426,1427,1429,1433],{},[146,1428,1392],{},[146,1430,1431],{},[18,1432,553],{},[146,1434,1435],{},[18,1436,534],{},[125,1438,1439,1441,1446],{},[146,1440,1392],{},[146,1442,1443],{},[18,1444,1445],{},"AsyncOptions.MaxBatchSize",[146,1447,1448],{},[18,1449,534],{},[125,1451,1452,1454,1459],{},[146,1453,1392],{},[146,1455,1456],{},[18,1457,1458],{},"AsyncOptions.MaxQueueSize",[146,1460,1461],{},[18,1462,776],{},[125,1464,1465,1467,1472],{},[146,1466,1392],{},[146,1468,1469],{},[18,1470,1471],{},"AsyncOptions.FlushIntervalMs",[146,1473,1474],{},[18,1475,803],{},[125,1477,1478,1481,1486],{},[146,1479,1480],{},"報價",[146,1482,1483],{},[18,1484,1485],{},"QuoteOptions.Enable",[146,1487,1488],{},[23,1489,1490,1492],{},[18,1491,400],{},"(opt-in)",[125,1494,1495,1497,1502],{},[146,1496,1480],{},[146,1498,1499],{},[18,1500,1501],{},"QuoteOptions.OutputFormat",[146,1503,1504],{},[18,1505,295],{},[125,1507,1508,1510,1515],{},[146,1509,1480],{},[146,1511,1512],{},[18,1513,1514],{},"QuoteOptions.QuotePath",[146,1516,1517],{},[18,1518,1001],{},[125,1520,1521,1523,1528],{},[146,1522,1480],{},[146,1524,1525],{},[18,1526,1527],{},"QuoteOptions.MaxOpenStreams",[146,1529,1530],{},[18,1531,1026],{},[125,1533,1534,1536,1541],{},[146,1535,1480],{},[146,1537,1538],{},[18,1539,1540],{},"QuoteOptions.MaxQueueSize",[146,1542,1543],{},[18,1544,1052],{},[125,1546,1547,1550,1554],{},[146,1548,1549],{},"其他",[146,1551,1552],{},[18,1553,625],{},[146,1555,1556],{},[18,1557,400],{},[14,1559,1560,1561,195],{},"→ 一頁式 API 摘要見 ",[311,1562,1564],{"href":1563},".\u002Fapi","API 參考",[1566,1567,1568],"style",{},"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);}",{"title":41,"searchDepth":54,"depth":61,"links":1570},[1571,1582,1584,1586],{"id":107,"depth":54,"text":1572,"children":1573},"1. LogOptions — 主 logger",[1574,1575,1576,1577,1578,1580],{"id":116,"depth":61,"text":117},{"id":261,"depth":61,"text":262},{"id":456,"depth":61,"text":457},{"id":601,"depth":61,"text":602},{"id":665,"depth":61,"text":1579},"1.5 LogTypeDirectories — 各級別子目錄",{"id":706,"depth":61,"text":1581},"1.6 AsyncLogOptions — dispatcher 調校",{"id":815,"depth":54,"text":1583},"2. QuoteOptions — 報價 pipeline (v3.1+)",{"id":1145,"depth":54,"text":1585},"3. 透過 LOG.GetCurrentOptions() 讀回",{"id":1256,"depth":54,"text":1587},"4. 預設值總表(未呼叫 LOG.Configure(...) 時)","OzaLog v3.1 完整配置參考 — LogOptions、AsyncLogOptions、QuoteOptions(透過 LOG.Configure() 設定)。","md",{},"\u002Fzh-tw\u002Fconfiguration",{"title":6,"description":1588},"zh-TW\u002Fconfiguration","pY_jgK1ePPhNAyLGioAXBVYtjKCivvHA83SuNpxpBbo",{"matched":1596,"target":1597,"all":1598},"fallback (.all() + manual match)","\u002Fzh-TW\u002Fconfiguration",[1599,1604,1609,1614,1619,1624,1629,1634,1638,1643,1648,1653,1654,1659],{"path":1600,"id":1601,"stem":1602,"title":1603},"\u002Fen\u002Fapi","content\u002Fen\u002Fapi.md","en\u002Fapi","API Reference",{"path":1605,"id":1606,"stem":1607,"title":1608},"\u002Fen\u002Fasync-pipeline","content\u002Fen\u002Fasync-pipeline.md","en\u002Fasync-pipeline","HFT Async Architecture",{"path":1610,"id":1611,"stem":1612,"title":1613},"\u002Fen\u002Fbenchmarks","content\u002Fen\u002Fbenchmarks.md","en\u002Fbenchmarks","Benchmarks",{"path":1615,"id":1616,"stem":1617,"title":1618},"\u002Fen\u002Fchangelog","content\u002Fen\u002Fchangelog.md","en\u002Fchangelog","Changelog",{"path":1620,"id":1621,"stem":1622,"title":1623},"\u002Fen\u002Fconfiguration","content\u002Fen\u002Fconfiguration.md","en\u002Fconfiguration","Configuration",{"path":1625,"id":1626,"stem":1627,"title":1628},"\u002Fen\u002Fgetting-started","content\u002Fen\u002Fgetting-started.md","en\u002Fgetting-started","Getting Started",{"path":1630,"id":1631,"stem":1632,"title":1633},"\u002Fen\u002Fmigration","content\u002Fen\u002Fmigration.md","en\u002Fmigration","Migration Guide",{"path":1635,"id":1636,"stem":1637,"title":1564},"\u002Fzh-tw\u002Fapi","content\u002Fzh-TW\u002Fapi.md","zh-TW\u002Fapi",{"path":1639,"id":1640,"stem":1641,"title":1642},"\u002Fzh-tw\u002Fasync-pipeline","content\u002Fzh-TW\u002Fasync-pipeline.md","zh-TW\u002Fasync-pipeline","HFT 非同步架構",{"path":1644,"id":1645,"stem":1646,"title":1647},"\u002Fzh-tw\u002Fbenchmarks","content\u002Fzh-TW\u002Fbenchmarks.md","zh-TW\u002Fbenchmarks","效能對比",{"path":1649,"id":1650,"stem":1651,"title":1652},"\u002Fzh-tw\u002Fchangelog","content\u002Fzh-TW\u002Fchangelog.md","zh-TW\u002Fchangelog","版本歷史",{"path":1591,"id":5,"stem":1593,"title":6},{"path":1655,"id":1656,"stem":1657,"title":1658},"\u002Fzh-tw\u002Fgetting-started","content\u002Fzh-TW\u002Fgetting-started.md","zh-TW\u002Fgetting-started","快速開始",{"path":1660,"id":1661,"stem":1662,"title":1663},"\u002Fzh-tw\u002Fmigration","content\u002Fzh-TW\u002Fmigration.md","zh-TW\u002Fmigration","升級指南",1778734456306]