[{"data":1,"prerenderedAt":3297},["ShallowReactive",2],{"navigation":3,"docs-path-index":152,"-docs-modules-logger-drivers":198,"-docs-modules-logger-drivers-surround":3292},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":52},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,53,138],{"title":11,"path":12,"stem":13,"children":14,"icon":25},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[15,17,21],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F1.getting-started\u002F3.examples","i-lucide-rocket",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":52},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fcore-features\u002Fconfiguration","docs\u002F2.core-features\u002F0.configuration",{"title":37,"path":38,"stem":39},"Dependency Injection","\u002Fdocs\u002Fcore-features\u002Fcontainer","docs\u002F2.core-features\u002F1.container",{"title":41,"path":42,"stem":43},"Controllers","\u002Fdocs\u002Fcore-features\u002Fcontrollers","docs\u002F2.core-features\u002F2.controllers",{"title":45,"path":46,"stem":47},"Middlewares","\u002Fdocs\u002Fcore-features\u002Fmiddlewares","docs\u002F2.core-features\u002F3.middlewares",{"title":49,"path":50,"stem":51},"Validation","\u002Fdocs\u002Fcore-features\u002Fvalidation","docs\u002F2.core-features\u002F4.validation",false,{"title":54,"icon":55,"defaultOpen":56,"path":57,"stem":58,"children":59,"page":52},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[60,77,93,109,123,134],{"title":61,"icon":52,"defaultOpen":52,"path":62,"stem":63,"children":64,"page":52},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[65,69,73],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":70,"path":71,"stem":72},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":74,"path":75,"stem":76},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":78,"icon":52,"defaultOpen":52,"path":79,"stem":80,"children":81,"page":52},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[82,85,89],{"title":66,"path":83,"stem":84},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":86,"path":87,"stem":88},"Drivers","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":90,"path":91,"stem":92},"API","\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":94,"icon":52,"defaultOpen":52,"path":95,"stem":96,"children":97,"page":52},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[98,101,105],{"title":66,"path":99,"stem":100},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":102,"path":103,"stem":104},"AWS Lambda","\u002Fdocs\u002Fmodules\u002Fserverless\u002Faws-lambda","docs\u002F3.modules\u002F3.serverless\u002F1.aws-lambda",{"title":106,"path":107,"stem":108},"Azure Functions","\u002Fdocs\u002Fmodules\u002Fserverless\u002Fazure-functions","docs\u002F3.modules\u002F3.serverless\u002F2.azure-functions",{"title":110,"icon":52,"defaultOpen":52,"path":111,"stem":112,"children":113,"page":52},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[114,117,120],{"title":66,"path":115,"stem":116},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":86,"path":118,"stem":119},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":90,"path":121,"stem":122},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":124,"icon":52,"defaultOpen":52,"path":125,"stem":126,"children":127,"page":52},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[128,131],{"title":66,"path":129,"stem":130},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":90,"path":132,"stem":133},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":135,"path":136,"stem":137},"MCP","\u002Fdocs\u002Fmodules\u002Fmcp","docs\u002F3.modules\u002F6.mcp",{"title":139,"icon":140,"defaultOpen":52,"path":141,"stem":142,"children":143,"page":52},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[144,148],{"title":145,"path":146,"stem":147},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":149,"path":150,"stem":151},"Custom Plugin","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",[153,155,157,158,159,160,162,163,164,165,166,167,169,171,172,173,174,176,177,178,179,181,182,183,184,186,187,188,189,191,192,193,194,196,197],{"path":154},"\u002Fdocs\u002F.navigation",{"path":156},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":161},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":168},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":170},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":67},{"path":71},{"path":75},{"path":175},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":83},{"path":87},{"path":91},{"path":180},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":99},{"path":103},{"path":107},{"path":185},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":115},{"path":118},{"path":121},{"path":190},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":129},{"path":132},{"path":136},{"path":195},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":146},{"path":150},{"id":199,"title":86,"body":200,"description":3286,"extension":3287,"links":3288,"meta":3289,"navigation":56,"path":87,"seo":3290,"stem":88,"__hash__":3291},"docs\u002Fdocs\u002F3.modules\u002F2.logger\u002F1.drivers.md",{"type":201,"value":202,"toc":3265},"minimark",[203,207,212,217,220,226,424,429,437,442,449,473,476,480,483,487,626,630,951,956,1050,1052,1056,1059,1063,1426,1430,1437,1585,1589,1593,1596,1805,1809,1812,1998,2002,2005,2149,2153,2156,2517,2521,2531,2536,2543,2610,2615,2684,2689,2745,2749,2754,2758,2767,2855,2860,2878,2883,2964,2968,2973,2979,3108,3112,3120,3125,3261],[204,205,206],"p",{},"Logger providers (also called drivers) are responsible for processing and outputting log messages to various destinations. Vercube includes two built-in providers and makes it easy to create custom ones for any logging backend.",[208,209,211],"h2",{"id":210},"built-in-providers","Built-in Providers",[213,214,216],"h3",{"id":215},"consoleprovider","ConsoleProvider",[204,218,219],{},"The ConsoleProvider outputs colorful, human-readable logs to the console. It's ideal for development and debugging.",[204,221,222],{},[223,224,225],"strong",{},"Usage:",[227,228,233],"pre",{"className":229,"code":230,"language":231,"meta":232,"style":232},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Logger, BaseLogger, ConsoleProvider } from '@vercube\u002Flogger';\n\ncontainer.bind(Logger, BaseLogger);\ncontainer.get(Logger).configure({\n  logLevel: 'debug',\n  providers: [\n    {\n      name: 'console',\n      provider: ConsoleProvider\n    }\n  ]\n});\n","ts","",[234,235,236,283,289,312,336,356,367,373,390,401,407,413],"code",{"__ignoreMap":232},[237,238,241,245,249,253,256,259,261,264,267,270,273,277,280],"span",{"class":239,"line":240},"line",1,[237,242,244],{"class":243},"s7zQu","import",[237,246,248],{"class":247},"sMK4o"," {",[237,250,252],{"class":251},"sTEyZ"," Logger",[237,254,255],{"class":247},",",[237,257,258],{"class":251}," BaseLogger",[237,260,255],{"class":247},[237,262,263],{"class":251}," ConsoleProvider",[237,265,266],{"class":247}," }",[237,268,269],{"class":243}," from",[237,271,272],{"class":247}," '",[237,274,276],{"class":275},"sfazB","@vercube\u002Flogger",[237,278,279],{"class":247},"'",[237,281,282],{"class":247},";\n",[237,284,286],{"class":239,"line":285},2,[237,287,288],{"emptyLinePlaceholder":56},"\n",[237,290,292,295,298,302,305,307,310],{"class":239,"line":291},3,[237,293,294],{"class":251},"container",[237,296,297],{"class":247},".",[237,299,301],{"class":300},"s2Zo4","bind",[237,303,304],{"class":251},"(Logger",[237,306,255],{"class":247},[237,308,309],{"class":251}," BaseLogger)",[237,311,282],{"class":247},[237,313,315,317,319,322,325,327,330,333],{"class":239,"line":314},4,[237,316,294],{"class":251},[237,318,297],{"class":247},[237,320,321],{"class":300},"get",[237,323,324],{"class":251},"(Logger)",[237,326,297],{"class":247},[237,328,329],{"class":300},"configure",[237,331,332],{"class":251},"(",[237,334,335],{"class":247},"{\n",[237,337,339,343,346,348,351,353],{"class":239,"line":338},5,[237,340,342],{"class":341},"swJcz","  logLevel",[237,344,345],{"class":247},":",[237,347,272],{"class":247},[237,349,350],{"class":275},"debug",[237,352,279],{"class":247},[237,354,355],{"class":247},",\n",[237,357,359,362,364],{"class":239,"line":358},6,[237,360,361],{"class":341},"  providers",[237,363,345],{"class":247},[237,365,366],{"class":251}," [\n",[237,368,370],{"class":239,"line":369},7,[237,371,372],{"class":247},"    {\n",[237,374,376,379,381,383,386,388],{"class":239,"line":375},8,[237,377,378],{"class":341},"      name",[237,380,345],{"class":247},[237,382,272],{"class":247},[237,384,385],{"class":275},"console",[237,387,279],{"class":247},[237,389,355],{"class":247},[237,391,393,396,398],{"class":239,"line":392},9,[237,394,395],{"class":341},"      provider",[237,397,345],{"class":247},[237,399,400],{"class":251}," ConsoleProvider\n",[237,402,404],{"class":239,"line":403},10,[237,405,406],{"class":247},"    }\n",[237,408,410],{"class":239,"line":409},11,[237,411,412],{"class":251},"  ]\n",[237,414,416,419,422],{"class":239,"line":415},12,[237,417,418],{"class":247},"}",[237,420,421],{"class":251},")",[237,423,282],{"class":247},[204,425,426],{},[223,427,428],{},"Output Format:",[227,430,435],{"className":431,"code":433,"language":434},[432],"language-text","[12:34:56.789] [DEBUG] Looking up user: abc-123\n[12:34:56.801] [INFO ] User found { userId: 'abc-123' }\n[12:34:57.123] [WARN ] UserService Rate limit approaching\n[12:34:58.456] [ERROR] Database connection failed Error: ...\n","text",[234,436,433],{"__ignoreMap":232},[204,438,439],{},[223,440,441],{},"Disabling Colors:",[204,443,444,445,448],{},"Set the ",[234,446,447],{},"NO_COLOR"," environment variable:",[227,450,454],{"className":451,"code":452,"language":453,"meta":232,"style":232},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","NO_COLOR=1 node app.js\n","bash",[234,455,456],{"__ignoreMap":232},[237,457,458,460,463,466,470],{"class":239,"line":240},[237,459,447],{"class":251},[237,461,462],{"class":247},"=",[237,464,465],{"class":275},"1",[237,467,469],{"class":468},"sBMFI"," node",[237,471,472],{"class":275}," app.js\n",[474,475],"hr",{},[213,477,479],{"id":478},"jsonprovider","JSONProvider",[204,481,482],{},"The JSONProvider outputs structured JSON logs suitable for log aggregation systems like ELK, Splunk, or CloudWatch.",[204,484,485],{},[223,486,225],{},[227,488,490],{"className":229,"code":489,"language":231,"meta":232,"style":232},"import { Logger, BaseLogger, JSONProvider } from '@vercube\u002Flogger';\n\ncontainer.bind(Logger, BaseLogger);\ncontainer.get(Logger).configure({\n  logLevel: 'info',\n  providers: [\n    {\n      name: 'json',\n      provider: JSONProvider\n    }\n  ]\n});\n",[234,491,492,521,525,541,559,574,582,586,601,610,614,618],{"__ignoreMap":232},[237,493,494,496,498,500,502,504,506,509,511,513,515,517,519],{"class":239,"line":240},[237,495,244],{"class":243},[237,497,248],{"class":247},[237,499,252],{"class":251},[237,501,255],{"class":247},[237,503,258],{"class":251},[237,505,255],{"class":247},[237,507,508],{"class":251}," JSONProvider",[237,510,266],{"class":247},[237,512,269],{"class":243},[237,514,272],{"class":247},[237,516,276],{"class":275},[237,518,279],{"class":247},[237,520,282],{"class":247},[237,522,523],{"class":239,"line":285},[237,524,288],{"emptyLinePlaceholder":56},[237,526,527,529,531,533,535,537,539],{"class":239,"line":291},[237,528,294],{"class":251},[237,530,297],{"class":247},[237,532,301],{"class":300},[237,534,304],{"class":251},[237,536,255],{"class":247},[237,538,309],{"class":251},[237,540,282],{"class":247},[237,542,543,545,547,549,551,553,555,557],{"class":239,"line":314},[237,544,294],{"class":251},[237,546,297],{"class":247},[237,548,321],{"class":300},[237,550,324],{"class":251},[237,552,297],{"class":247},[237,554,329],{"class":300},[237,556,332],{"class":251},[237,558,335],{"class":247},[237,560,561,563,565,567,570,572],{"class":239,"line":338},[237,562,342],{"class":341},[237,564,345],{"class":247},[237,566,272],{"class":247},[237,568,569],{"class":275},"info",[237,571,279],{"class":247},[237,573,355],{"class":247},[237,575,576,578,580],{"class":239,"line":358},[237,577,361],{"class":341},[237,579,345],{"class":247},[237,581,366],{"class":251},[237,583,584],{"class":239,"line":369},[237,585,372],{"class":247},[237,587,588,590,592,594,597,599],{"class":239,"line":375},[237,589,378],{"class":341},[237,591,345],{"class":247},[237,593,272],{"class":247},[237,595,596],{"class":275},"json",[237,598,279],{"class":247},[237,600,355],{"class":247},[237,602,603,605,607],{"class":239,"line":392},[237,604,395],{"class":341},[237,606,345],{"class":247},[237,608,609],{"class":251}," JSONProvider\n",[237,611,612],{"class":239,"line":403},[237,613,406],{"class":247},[237,615,616],{"class":239,"line":409},[237,617,412],{"class":251},[237,619,620,622,624],{"class":239,"line":415},[237,621,418],{"class":247},[237,623,421],{"class":251},[237,625,282],{"class":247},[204,627,628],{},[223,629,428],{},[227,631,634],{"className":632,"code":633,"language":596,"meta":232,"style":232},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\"type\":\"application_log\",\"level\":\"debug\",\"args\":[\"Looking up user: abc-123\"],\"timestamp\":1703082896789}\n{\"type\":\"application_log\",\"level\":\"info\",\"args\":[\"User found\",{\"userId\":\"abc-123\"}],\"timestamp\":1703082896801}\n{\"type\":\"application_log\",\"level\":\"warn\",\"args\":[\"Rate limit approaching\"],\"timestamp\":1703082897123}\n{\"type\":\"application_log\",\"level\":\"error\",\"args\":[\"Database failed\",{\"error\":\"...\"}],\"timestamp\":1703082898456}\n",[234,635,636,714,800,867],{"__ignoreMap":232},[237,637,638,641,644,648,650,652,654,657,659,661,663,666,668,670,672,674,676,678,680,683,685,688,690,693,695,698,700,703,705,707,711],{"class":239,"line":240},[237,639,640],{"class":247},"{",[237,642,643],{"class":247},"\"",[237,645,647],{"class":646},"spNyl","type",[237,649,643],{"class":247},[237,651,345],{"class":247},[237,653,643],{"class":247},[237,655,656],{"class":275},"application_log",[237,658,643],{"class":247},[237,660,255],{"class":247},[237,662,643],{"class":247},[237,664,665],{"class":646},"level",[237,667,643],{"class":247},[237,669,345],{"class":247},[237,671,643],{"class":247},[237,673,350],{"class":275},[237,675,643],{"class":247},[237,677,255],{"class":247},[237,679,643],{"class":247},[237,681,682],{"class":646},"args",[237,684,643],{"class":247},[237,686,687],{"class":247},":[",[237,689,643],{"class":247},[237,691,692],{"class":275},"Looking up user: abc-123",[237,694,643],{"class":247},[237,696,697],{"class":247},"],",[237,699,643],{"class":247},[237,701,702],{"class":646},"timestamp",[237,704,643],{"class":247},[237,706,345],{"class":247},[237,708,710],{"class":709},"sbssI","1703082896789",[237,712,713],{"class":247},"}\n",[237,715,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,763,765,768,770,773,775,777,779,782,784,787,789,791,793,795,798],{"class":239,"line":285},[237,717,640],{"class":247},[237,719,643],{"class":247},[237,721,647],{"class":646},[237,723,643],{"class":247},[237,725,345],{"class":247},[237,727,643],{"class":247},[237,729,656],{"class":275},[237,731,643],{"class":247},[237,733,255],{"class":247},[237,735,643],{"class":247},[237,737,665],{"class":646},[237,739,643],{"class":247},[237,741,345],{"class":247},[237,743,643],{"class":247},[237,745,569],{"class":275},[237,747,643],{"class":247},[237,749,255],{"class":247},[237,751,643],{"class":247},[237,753,682],{"class":646},[237,755,643],{"class":247},[237,757,687],{"class":247},[237,759,643],{"class":247},[237,761,762],{"class":275},"User found",[237,764,643],{"class":247},[237,766,767],{"class":247},",{",[237,769,643],{"class":247},[237,771,772],{"class":468},"userId",[237,774,643],{"class":247},[237,776,345],{"class":247},[237,778,643],{"class":247},[237,780,781],{"class":275},"abc-123",[237,783,643],{"class":247},[237,785,786],{"class":247},"}],",[237,788,643],{"class":247},[237,790,702],{"class":646},[237,792,643],{"class":247},[237,794,345],{"class":247},[237,796,797],{"class":709},"1703082896801",[237,799,713],{"class":247},[237,801,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,833,835,837,839,841,843,845,847,850,852,854,856,858,860,862,865],{"class":239,"line":291},[237,803,640],{"class":247},[237,805,643],{"class":247},[237,807,647],{"class":646},[237,809,643],{"class":247},[237,811,345],{"class":247},[237,813,643],{"class":247},[237,815,656],{"class":275},[237,817,643],{"class":247},[237,819,255],{"class":247},[237,821,643],{"class":247},[237,823,665],{"class":646},[237,825,643],{"class":247},[237,827,345],{"class":247},[237,829,643],{"class":247},[237,831,832],{"class":275},"warn",[237,834,643],{"class":247},[237,836,255],{"class":247},[237,838,643],{"class":247},[237,840,682],{"class":646},[237,842,643],{"class":247},[237,844,687],{"class":247},[237,846,643],{"class":247},[237,848,849],{"class":275},"Rate limit approaching",[237,851,643],{"class":247},[237,853,697],{"class":247},[237,855,643],{"class":247},[237,857,702],{"class":646},[237,859,643],{"class":247},[237,861,345],{"class":247},[237,863,864],{"class":709},"1703082897123",[237,866,713],{"class":247},[237,868,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,900,902,904,906,908,910,912,914,917,919,921,923,925,927,929,931,934,936,938,940,942,944,946,949],{"class":239,"line":314},[237,870,640],{"class":247},[237,872,643],{"class":247},[237,874,647],{"class":646},[237,876,643],{"class":247},[237,878,345],{"class":247},[237,880,643],{"class":247},[237,882,656],{"class":275},[237,884,643],{"class":247},[237,886,255],{"class":247},[237,888,643],{"class":247},[237,890,665],{"class":646},[237,892,643],{"class":247},[237,894,345],{"class":247},[237,896,643],{"class":247},[237,898,899],{"class":275},"error",[237,901,643],{"class":247},[237,903,255],{"class":247},[237,905,643],{"class":247},[237,907,682],{"class":646},[237,909,643],{"class":247},[237,911,687],{"class":247},[237,913,643],{"class":247},[237,915,916],{"class":275},"Database failed",[237,918,643],{"class":247},[237,920,767],{"class":247},[237,922,643],{"class":247},[237,924,899],{"class":468},[237,926,643],{"class":247},[237,928,345],{"class":247},[237,930,643],{"class":247},[237,932,933],{"class":275},"...",[237,935,643],{"class":247},[237,937,786],{"class":247},[237,939,643],{"class":247},[237,941,702],{"class":646},[237,943,643],{"class":247},[237,945,345],{"class":247},[237,947,948],{"class":709},"1703082898456",[237,950,713],{"class":247},[204,952,953],{},[223,954,955],{},"JSON Structure:",[957,958,959,975],"table",{},[960,961,962],"thead",{},[963,964,965,969,972],"tr",{},[966,967,968],"th",{},"Field",[966,970,971],{},"Type",[966,973,974],{},"Description",[976,977,978,991,1002,1014,1026,1038],"tbody",{},[963,979,980,985,988],{},[981,982,983],"td",{},[234,984,647],{},[981,986,987],{},"string",[981,989,990],{},"Log type (application_log, access_log)",[963,992,993,997,999],{},[981,994,995],{},[234,996,665],{},[981,998,987],{},[981,1000,1001],{},"Log level (debug, info, warn, error)",[963,1003,1004,1008,1011],{},[981,1005,1006],{},[234,1007,682],{},[981,1009,1010],{},"array",[981,1012,1013],{},"Array of log arguments",[963,1015,1016,1020,1023],{},[981,1017,1018],{},[234,1019,702],{},[981,1021,1022],{},"number",[981,1024,1025],{},"Unix timestamp in milliseconds",[963,1027,1028,1033,1035],{},[981,1029,1030],{},[234,1031,1032],{},"tag",[981,1034,987],{},[981,1036,1037],{},"Optional tag for categorization",[963,1039,1040,1045,1047],{},[981,1041,1042],{},[234,1043,1044],{},"pid",[981,1046,1022],{},[981,1048,1049],{},"Optional process ID",[474,1051],{},[208,1053,1055],{"id":1054},"creating-custom-providers","Creating Custom Providers",[204,1057,1058],{},"Creating a custom provider allows you to output logs to any destination: files, databases, external services, etc.",[213,1060,1062],{"id":1061},"basic-provider-template","Basic Provider Template",[227,1064,1066],{"className":229,"code":1065,"language":231,"meta":232,"style":232},"import { LoggerProvider } from '@vercube\u002Flogger';\nimport type { LoggerTypes } from '@vercube\u002Flogger';\n\nexport class CustomProvider extends LoggerProvider {\n  \u002F**\n   * Initialize the provider with custom options\n   *\u002F\n  public initialize(options: any): void {\n    \u002F\u002F Setup code here\n    \u002F\u002F Connect to external service, open file, etc.\n  }\n  \n  \u002F**\n   * Process a log message\n   *\u002F\n  public processMessage(message: LoggerTypes.Message): void {\n    \u002F\u002F Format and output the message\n    const formatted = this.format(message);\n    this.output(formatted);\n  }\n  \n  private format(message: LoggerTypes.Message): string {\n    \u002F\u002F Your formatting logic\n    return JSON.stringify(message);\n  }\n  \n  private output(formatted: string): void {\n    \u002F\u002F Your output logic\n    console.log(formatted);\n  }\n}\n",[234,1067,1068,1089,1113,1117,1136,1142,1147,1152,1179,1184,1189,1194,1199,1204,1210,1215,1243,1249,1275,1293,1298,1303,1331,1337,1359,1364,1369,1391,1397,1416,1421],{"__ignoreMap":232},[237,1069,1070,1072,1074,1077,1079,1081,1083,1085,1087],{"class":239,"line":240},[237,1071,244],{"class":243},[237,1073,248],{"class":247},[237,1075,1076],{"class":251}," LoggerProvider",[237,1078,266],{"class":247},[237,1080,269],{"class":243},[237,1082,272],{"class":247},[237,1084,276],{"class":275},[237,1086,279],{"class":247},[237,1088,282],{"class":247},[237,1090,1091,1093,1096,1098,1101,1103,1105,1107,1109,1111],{"class":239,"line":285},[237,1092,244],{"class":243},[237,1094,1095],{"class":243}," type",[237,1097,248],{"class":247},[237,1099,1100],{"class":251}," LoggerTypes",[237,1102,266],{"class":247},[237,1104,269],{"class":243},[237,1106,272],{"class":247},[237,1108,276],{"class":275},[237,1110,279],{"class":247},[237,1112,282],{"class":247},[237,1114,1115],{"class":239,"line":291},[237,1116,288],{"emptyLinePlaceholder":56},[237,1118,1119,1122,1125,1128,1131,1133],{"class":239,"line":314},[237,1120,1121],{"class":243},"export",[237,1123,1124],{"class":646}," class",[237,1126,1127],{"class":468}," CustomProvider",[237,1129,1130],{"class":646}," extends",[237,1132,1076],{"class":468},[237,1134,1135],{"class":247}," {\n",[237,1137,1138],{"class":239,"line":338},[237,1139,1141],{"class":1140},"sHwdD","  \u002F**\n",[237,1143,1144],{"class":239,"line":358},[237,1145,1146],{"class":1140},"   * Initialize the provider with custom options\n",[237,1148,1149],{"class":239,"line":369},[237,1150,1151],{"class":1140},"   *\u002F\n",[237,1153,1154,1157,1160,1162,1166,1168,1171,1174,1177],{"class":239,"line":375},[237,1155,1156],{"class":646},"  public",[237,1158,1159],{"class":341}," initialize",[237,1161,332],{"class":247},[237,1163,1165],{"class":1164},"sHdIc","options",[237,1167,345],{"class":247},[237,1169,1170],{"class":468}," any",[237,1172,1173],{"class":247},"):",[237,1175,1176],{"class":468}," void",[237,1178,1135],{"class":247},[237,1180,1181],{"class":239,"line":392},[237,1182,1183],{"class":1140},"    \u002F\u002F Setup code here\n",[237,1185,1186],{"class":239,"line":403},[237,1187,1188],{"class":1140},"    \u002F\u002F Connect to external service, open file, etc.\n",[237,1190,1191],{"class":239,"line":409},[237,1192,1193],{"class":247},"  }\n",[237,1195,1196],{"class":239,"line":415},[237,1197,1198],{"class":251},"  \n",[237,1200,1202],{"class":239,"line":1201},13,[237,1203,1141],{"class":1140},[237,1205,1207],{"class":239,"line":1206},14,[237,1208,1209],{"class":1140},"   * Process a log message\n",[237,1211,1213],{"class":239,"line":1212},15,[237,1214,1151],{"class":1140},[237,1216,1218,1220,1223,1225,1228,1230,1232,1234,1237,1239,1241],{"class":239,"line":1217},16,[237,1219,1156],{"class":646},[237,1221,1222],{"class":341}," processMessage",[237,1224,332],{"class":247},[237,1226,1227],{"class":1164},"message",[237,1229,345],{"class":247},[237,1231,1100],{"class":468},[237,1233,297],{"class":247},[237,1235,1236],{"class":468},"Message",[237,1238,1173],{"class":247},[237,1240,1176],{"class":468},[237,1242,1135],{"class":247},[237,1244,1246],{"class":239,"line":1245},17,[237,1247,1248],{"class":1140},"    \u002F\u002F Format and output the message\n",[237,1250,1252,1255,1258,1261,1264,1267,1269,1271,1273],{"class":239,"line":1251},18,[237,1253,1254],{"class":646},"    const",[237,1256,1257],{"class":251}," formatted",[237,1259,1260],{"class":247}," =",[237,1262,1263],{"class":247}," this.",[237,1265,1266],{"class":300},"format",[237,1268,332],{"class":341},[237,1270,1227],{"class":251},[237,1272,421],{"class":341},[237,1274,282],{"class":247},[237,1276,1278,1281,1284,1286,1289,1291],{"class":239,"line":1277},19,[237,1279,1280],{"class":247},"    this.",[237,1282,1283],{"class":300},"output",[237,1285,332],{"class":341},[237,1287,1288],{"class":251},"formatted",[237,1290,421],{"class":341},[237,1292,282],{"class":247},[237,1294,1296],{"class":239,"line":1295},20,[237,1297,1193],{"class":247},[237,1299,1301],{"class":239,"line":1300},21,[237,1302,1198],{"class":251},[237,1304,1306,1309,1312,1314,1316,1318,1320,1322,1324,1326,1329],{"class":239,"line":1305},22,[237,1307,1308],{"class":646},"  private",[237,1310,1311],{"class":341}," format",[237,1313,332],{"class":247},[237,1315,1227],{"class":1164},[237,1317,345],{"class":247},[237,1319,1100],{"class":468},[237,1321,297],{"class":247},[237,1323,1236],{"class":468},[237,1325,1173],{"class":247},[237,1327,1328],{"class":468}," string",[237,1330,1135],{"class":247},[237,1332,1334],{"class":239,"line":1333},23,[237,1335,1336],{"class":1140},"    \u002F\u002F Your formatting logic\n",[237,1338,1340,1343,1346,1348,1351,1353,1355,1357],{"class":239,"line":1339},24,[237,1341,1342],{"class":243},"    return",[237,1344,1345],{"class":251}," JSON",[237,1347,297],{"class":247},[237,1349,1350],{"class":300},"stringify",[237,1352,332],{"class":341},[237,1354,1227],{"class":251},[237,1356,421],{"class":341},[237,1358,282],{"class":247},[237,1360,1362],{"class":239,"line":1361},25,[237,1363,1193],{"class":247},[237,1365,1367],{"class":239,"line":1366},26,[237,1368,1198],{"class":251},[237,1370,1372,1374,1377,1379,1381,1383,1385,1387,1389],{"class":239,"line":1371},27,[237,1373,1308],{"class":646},[237,1375,1376],{"class":341}," output",[237,1378,332],{"class":247},[237,1380,1288],{"class":1164},[237,1382,345],{"class":247},[237,1384,1328],{"class":468},[237,1386,1173],{"class":247},[237,1388,1176],{"class":468},[237,1390,1135],{"class":247},[237,1392,1394],{"class":239,"line":1393},28,[237,1395,1396],{"class":1140},"    \u002F\u002F Your output logic\n",[237,1398,1400,1403,1405,1408,1410,1412,1414],{"class":239,"line":1399},29,[237,1401,1402],{"class":251},"    console",[237,1404,297],{"class":247},[237,1406,1407],{"class":300},"log",[237,1409,332],{"class":341},[237,1411,1288],{"class":251},[237,1413,421],{"class":341},[237,1415,282],{"class":247},[237,1417,1419],{"class":239,"line":1418},30,[237,1420,1193],{"class":247},[237,1422,1424],{"class":239,"line":1423},31,[237,1425,713],{"class":247},[213,1427,1429],{"id":1428},"message-object-structure","Message Object Structure",[204,1431,1432,1433,1436],{},"The ",[234,1434,1435],{},"LoggerTypes.Message"," object contains:",[227,1438,1440],{"className":229,"code":1439,"language":231,"meta":232,"style":232},"interface Message {\n  level: 'debug' | 'info' | 'warn' | 'error';\n  args: any[];  \u002F\u002F Arguments passed to logger method\n  tag?: string;  \u002F\u002F Optional tag\n  timestamp?: number;  \u002F\u002F Unix timestamp in ms\n  pid?: number;  \u002F\u002F Process ID\n  type?: 'access_log' | 'application_log';  \u002F\u002F Log type\n}\n",[234,1441,1442,1452,1492,1510,1525,1540,1554,1581],{"__ignoreMap":232},[237,1443,1444,1447,1450],{"class":239,"line":240},[237,1445,1446],{"class":646},"interface",[237,1448,1449],{"class":468}," Message",[237,1451,1135],{"class":247},[237,1453,1454,1457,1459,1461,1463,1465,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490],{"class":239,"line":285},[237,1455,1456],{"class":341},"  level",[237,1458,345],{"class":247},[237,1460,272],{"class":247},[237,1462,350],{"class":275},[237,1464,279],{"class":247},[237,1466,1467],{"class":247}," |",[237,1469,272],{"class":247},[237,1471,569],{"class":275},[237,1473,279],{"class":247},[237,1475,1467],{"class":247},[237,1477,272],{"class":247},[237,1479,832],{"class":275},[237,1481,279],{"class":247},[237,1483,1467],{"class":247},[237,1485,272],{"class":247},[237,1487,899],{"class":275},[237,1489,279],{"class":247},[237,1491,282],{"class":247},[237,1493,1494,1497,1499,1501,1504,1507],{"class":239,"line":291},[237,1495,1496],{"class":341},"  args",[237,1498,345],{"class":247},[237,1500,1170],{"class":468},[237,1502,1503],{"class":251},"[]",[237,1505,1506],{"class":247},";",[237,1508,1509],{"class":1140},"  \u002F\u002F Arguments passed to logger method\n",[237,1511,1512,1515,1518,1520,1522],{"class":239,"line":314},[237,1513,1514],{"class":341},"  tag",[237,1516,1517],{"class":247},"?:",[237,1519,1328],{"class":468},[237,1521,1506],{"class":247},[237,1523,1524],{"class":1140},"  \u002F\u002F Optional tag\n",[237,1526,1527,1530,1532,1535,1537],{"class":239,"line":338},[237,1528,1529],{"class":341},"  timestamp",[237,1531,1517],{"class":247},[237,1533,1534],{"class":468}," number",[237,1536,1506],{"class":247},[237,1538,1539],{"class":1140},"  \u002F\u002F Unix timestamp in ms\n",[237,1541,1542,1545,1547,1549,1551],{"class":239,"line":358},[237,1543,1544],{"class":341},"  pid",[237,1546,1517],{"class":247},[237,1548,1534],{"class":468},[237,1550,1506],{"class":247},[237,1552,1553],{"class":1140},"  \u002F\u002F Process ID\n",[237,1555,1556,1559,1561,1563,1566,1568,1570,1572,1574,1576,1578],{"class":239,"line":369},[237,1557,1558],{"class":341},"  type",[237,1560,1517],{"class":247},[237,1562,272],{"class":247},[237,1564,1565],{"class":275},"access_log",[237,1567,279],{"class":247},[237,1569,1467],{"class":247},[237,1571,272],{"class":247},[237,1573,656],{"class":275},[237,1575,279],{"class":247},[237,1577,1506],{"class":247},[237,1579,1580],{"class":1140},"  \u002F\u002F Log type\n",[237,1582,1583],{"class":239,"line":375},[237,1584,713],{"class":247},[208,1586,1588],{"id":1587},"provider-configuration","Provider Configuration",[213,1590,1592],{"id":1591},"register-provider-in-container","Register Provider in Container",[204,1594,1595],{},"If your provider has dependencies, register it in the container:",[227,1597,1599],{"className":229,"code":1598,"language":231,"meta":232,"style":232},"import { Container } from '@vercube\u002Fdi';\nimport { CustomProvider } from '.\u002Fproviders\u002FCustomProvider';\n\nexport function setupContainer(container: Container): void {\n  \u002F\u002F Register provider\n  container.bind(CustomProvider);\n  \n  \u002F\u002F Configure logger to use it\n  container.get(Logger).configure({\n    providers: [\n      {\n        name: 'custom',\n        provider: CustomProvider,\n        options: { ... }\n      }\n    ]\n  });\n}\n",[234,1600,1601,1623,1644,1648,1672,1677,1695,1699,1704,1726,1735,1740,1756,1767,1782,1787,1792,1801],{"__ignoreMap":232},[237,1602,1603,1605,1607,1610,1612,1614,1616,1619,1621],{"class":239,"line":240},[237,1604,244],{"class":243},[237,1606,248],{"class":247},[237,1608,1609],{"class":251}," Container",[237,1611,266],{"class":247},[237,1613,269],{"class":243},[237,1615,272],{"class":247},[237,1617,1618],{"class":275},"@vercube\u002Fdi",[237,1620,279],{"class":247},[237,1622,282],{"class":247},[237,1624,1625,1627,1629,1631,1633,1635,1637,1640,1642],{"class":239,"line":285},[237,1626,244],{"class":243},[237,1628,248],{"class":247},[237,1630,1127],{"class":251},[237,1632,266],{"class":247},[237,1634,269],{"class":243},[237,1636,272],{"class":247},[237,1638,1639],{"class":275},".\u002Fproviders\u002FCustomProvider",[237,1641,279],{"class":247},[237,1643,282],{"class":247},[237,1645,1646],{"class":239,"line":291},[237,1647,288],{"emptyLinePlaceholder":56},[237,1649,1650,1652,1655,1658,1660,1662,1664,1666,1668,1670],{"class":239,"line":314},[237,1651,1121],{"class":243},[237,1653,1654],{"class":646}," function",[237,1656,1657],{"class":300}," setupContainer",[237,1659,332],{"class":247},[237,1661,294],{"class":1164},[237,1663,345],{"class":247},[237,1665,1609],{"class":468},[237,1667,1173],{"class":247},[237,1669,1176],{"class":468},[237,1671,1135],{"class":247},[237,1673,1674],{"class":239,"line":338},[237,1675,1676],{"class":1140},"  \u002F\u002F Register provider\n",[237,1678,1679,1682,1684,1686,1688,1691,1693],{"class":239,"line":358},[237,1680,1681],{"class":251},"  container",[237,1683,297],{"class":247},[237,1685,301],{"class":300},[237,1687,332],{"class":341},[237,1689,1690],{"class":251},"CustomProvider",[237,1692,421],{"class":341},[237,1694,282],{"class":247},[237,1696,1697],{"class":239,"line":369},[237,1698,1198],{"class":341},[237,1700,1701],{"class":239,"line":375},[237,1702,1703],{"class":1140},"  \u002F\u002F Configure logger to use it\n",[237,1705,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724],{"class":239,"line":392},[237,1707,1681],{"class":251},[237,1709,297],{"class":247},[237,1711,321],{"class":300},[237,1713,332],{"class":341},[237,1715,78],{"class":251},[237,1717,421],{"class":341},[237,1719,297],{"class":247},[237,1721,329],{"class":300},[237,1723,332],{"class":341},[237,1725,335],{"class":247},[237,1727,1728,1731,1733],{"class":239,"line":403},[237,1729,1730],{"class":341},"    providers",[237,1732,345],{"class":247},[237,1734,366],{"class":341},[237,1736,1737],{"class":239,"line":409},[237,1738,1739],{"class":247},"      {\n",[237,1741,1742,1745,1747,1749,1752,1754],{"class":239,"line":415},[237,1743,1744],{"class":341},"        name",[237,1746,345],{"class":247},[237,1748,272],{"class":247},[237,1750,1751],{"class":275},"custom",[237,1753,279],{"class":247},[237,1755,355],{"class":247},[237,1757,1758,1761,1763,1765],{"class":239,"line":1201},[237,1759,1760],{"class":341},"        provider",[237,1762,345],{"class":247},[237,1764,1127],{"class":251},[237,1766,355],{"class":247},[237,1768,1769,1772,1774,1776,1779],{"class":239,"line":1206},[237,1770,1771],{"class":341},"        options",[237,1773,345],{"class":247},[237,1775,248],{"class":247},[237,1777,1778],{"class":247}," ...",[237,1780,1781],{"class":247}," }\n",[237,1783,1784],{"class":239,"line":1212},[237,1785,1786],{"class":247},"      }\n",[237,1788,1789],{"class":239,"line":1217},[237,1790,1791],{"class":341},"    ]\n",[237,1793,1794,1797,1799],{"class":239,"line":1245},[237,1795,1796],{"class":247},"  }",[237,1798,421],{"class":341},[237,1800,282],{"class":247},[237,1802,1803],{"class":239,"line":1251},[237,1804,713],{"class":247},[213,1806,1808],{"id":1807},"provider-with-dependencies","Provider with Dependencies",[204,1810,1811],{},"If your provider needs other services:",[227,1813,1815],{"className":229,"code":1814,"language":231,"meta":232,"style":232},"import { Inject } from '@vercube\u002Fdi';\nimport { LoggerProvider } from '@vercube\u002Flogger';\nimport { Database } from '.\u002Fdatabase';\n\nexport class DatabaseProvider extends LoggerProvider {\n  @Inject(Database)\n  private db!: Database;\n  \n  public initialize(options: any): void {\n    \u002F\u002F this.db is now available\n  }\n  \n  public processMessage(message: LoggerTypes.Message): void {\n    \u002F\u002F Use this.db to write logs\n  }\n}\n",[234,1816,1817,1838,1858,1880,1884,1899,1910,1924,1928,1948,1953,1957,1961,1985,1990,1994],{"__ignoreMap":232},[237,1818,1819,1821,1823,1826,1828,1830,1832,1834,1836],{"class":239,"line":240},[237,1820,244],{"class":243},[237,1822,248],{"class":247},[237,1824,1825],{"class":251}," Inject",[237,1827,266],{"class":247},[237,1829,269],{"class":243},[237,1831,272],{"class":247},[237,1833,1618],{"class":275},[237,1835,279],{"class":247},[237,1837,282],{"class":247},[237,1839,1840,1842,1844,1846,1848,1850,1852,1854,1856],{"class":239,"line":285},[237,1841,244],{"class":243},[237,1843,248],{"class":247},[237,1845,1076],{"class":251},[237,1847,266],{"class":247},[237,1849,269],{"class":243},[237,1851,272],{"class":247},[237,1853,276],{"class":275},[237,1855,279],{"class":247},[237,1857,282],{"class":247},[237,1859,1860,1862,1864,1867,1869,1871,1873,1876,1878],{"class":239,"line":291},[237,1861,244],{"class":243},[237,1863,248],{"class":247},[237,1865,1866],{"class":251}," Database",[237,1868,266],{"class":247},[237,1870,269],{"class":243},[237,1872,272],{"class":247},[237,1874,1875],{"class":275},".\u002Fdatabase",[237,1877,279],{"class":247},[237,1879,282],{"class":247},[237,1881,1882],{"class":239,"line":314},[237,1883,288],{"emptyLinePlaceholder":56},[237,1885,1886,1888,1890,1893,1895,1897],{"class":239,"line":338},[237,1887,1121],{"class":243},[237,1889,1124],{"class":646},[237,1891,1892],{"class":468}," DatabaseProvider",[237,1894,1130],{"class":646},[237,1896,1076],{"class":468},[237,1898,1135],{"class":247},[237,1900,1901,1904,1907],{"class":239,"line":358},[237,1902,1903],{"class":247},"  @",[237,1905,1906],{"class":300},"Inject",[237,1908,1909],{"class":251},"(Database)\n",[237,1911,1912,1914,1917,1920,1922],{"class":239,"line":369},[237,1913,1308],{"class":646},[237,1915,1916],{"class":341}," db",[237,1918,1919],{"class":247},"!:",[237,1921,1866],{"class":468},[237,1923,282],{"class":247},[237,1925,1926],{"class":239,"line":375},[237,1927,1198],{"class":251},[237,1929,1930,1932,1934,1936,1938,1940,1942,1944,1946],{"class":239,"line":392},[237,1931,1156],{"class":646},[237,1933,1159],{"class":341},[237,1935,332],{"class":247},[237,1937,1165],{"class":1164},[237,1939,345],{"class":247},[237,1941,1170],{"class":468},[237,1943,1173],{"class":247},[237,1945,1176],{"class":468},[237,1947,1135],{"class":247},[237,1949,1950],{"class":239,"line":403},[237,1951,1952],{"class":1140},"    \u002F\u002F this.db is now available\n",[237,1954,1955],{"class":239,"line":409},[237,1956,1193],{"class":247},[237,1958,1959],{"class":239,"line":415},[237,1960,1198],{"class":251},[237,1962,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983],{"class":239,"line":1201},[237,1964,1156],{"class":646},[237,1966,1222],{"class":341},[237,1968,332],{"class":247},[237,1970,1227],{"class":1164},[237,1972,345],{"class":247},[237,1974,1100],{"class":468},[237,1976,297],{"class":247},[237,1978,1236],{"class":468},[237,1980,1173],{"class":247},[237,1982,1176],{"class":468},[237,1984,1135],{"class":247},[237,1986,1987],{"class":239,"line":1206},[237,1988,1989],{"class":1140},"    \u002F\u002F Use this.db to write logs\n",[237,1991,1992],{"class":239,"line":1212},[237,1993,1193],{"class":247},[237,1995,1996],{"class":239,"line":1217},[237,1997,713],{"class":247},[213,1999,2001],{"id":2000},"async-initialization","Async Initialization",[204,2003,2004],{},"If your provider needs async initialization:",[227,2006,2008],{"className":229,"code":2007,"language":231,"meta":232,"style":232},"export class AsyncProvider extends LoggerProvider {\n  private connection: Connection;\n  \n  public async initialize(options: any): Promise\u003Cvoid> {\n    \u002F\u002F Async initialization\n    this.connection = await connectToService(options);\n  }\n  \n  public processMessage(message: LoggerTypes.Message): void {\n    \u002F\u002F Use this.connection\n  }\n}\n",[234,2009,2010,2025,2039,2043,2076,2081,2104,2108,2112,2136,2141,2145],{"__ignoreMap":232},[237,2011,2012,2014,2016,2019,2021,2023],{"class":239,"line":240},[237,2013,1121],{"class":243},[237,2015,1124],{"class":646},[237,2017,2018],{"class":468}," AsyncProvider",[237,2020,1130],{"class":646},[237,2022,1076],{"class":468},[237,2024,1135],{"class":247},[237,2026,2027,2029,2032,2034,2037],{"class":239,"line":285},[237,2028,1308],{"class":646},[237,2030,2031],{"class":341}," connection",[237,2033,345],{"class":247},[237,2035,2036],{"class":468}," Connection",[237,2038,282],{"class":247},[237,2040,2041],{"class":239,"line":291},[237,2042,1198],{"class":251},[237,2044,2045,2047,2050,2052,2054,2056,2058,2060,2062,2065,2068,2071,2074],{"class":239,"line":314},[237,2046,1156],{"class":646},[237,2048,2049],{"class":646}," async",[237,2051,1159],{"class":341},[237,2053,332],{"class":247},[237,2055,1165],{"class":1164},[237,2057,345],{"class":247},[237,2059,1170],{"class":468},[237,2061,1173],{"class":247},[237,2063,2064],{"class":468}," Promise",[237,2066,2067],{"class":247},"\u003C",[237,2069,2070],{"class":468},"void",[237,2072,2073],{"class":247},">",[237,2075,1135],{"class":247},[237,2077,2078],{"class":239,"line":338},[237,2079,2080],{"class":1140},"    \u002F\u002F Async initialization\n",[237,2082,2083,2085,2088,2090,2093,2096,2098,2100,2102],{"class":239,"line":358},[237,2084,1280],{"class":247},[237,2086,2087],{"class":251},"connection",[237,2089,1260],{"class":247},[237,2091,2092],{"class":243}," await",[237,2094,2095],{"class":300}," connectToService",[237,2097,332],{"class":341},[237,2099,1165],{"class":251},[237,2101,421],{"class":341},[237,2103,282],{"class":247},[237,2105,2106],{"class":239,"line":369},[237,2107,1193],{"class":247},[237,2109,2110],{"class":239,"line":375},[237,2111,1198],{"class":251},[237,2113,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134],{"class":239,"line":392},[237,2115,1156],{"class":646},[237,2117,1222],{"class":341},[237,2119,332],{"class":247},[237,2121,1227],{"class":1164},[237,2123,345],{"class":247},[237,2125,1100],{"class":468},[237,2127,297],{"class":247},[237,2129,1236],{"class":468},[237,2131,1173],{"class":247},[237,2133,1176],{"class":468},[237,2135,1135],{"class":247},[237,2137,2138],{"class":239,"line":403},[237,2139,2140],{"class":1140},"    \u002F\u002F Use this.connection\n",[237,2142,2143],{"class":239,"line":409},[237,2144,1193],{"class":247},[237,2146,2147],{"class":239,"line":415},[237,2148,713],{"class":247},[208,2150,2152],{"id":2151},"using-multiple-providers","Using Multiple Providers",[204,2154,2155],{},"Configure multiple providers to output to different destinations:",[227,2157,2159],{"className":229,"code":2158,"language":231,"meta":232,"style":232},"container.get(Logger).configure({\n  logLevel: 'debug',\n  providers: [\n    \u002F\u002F Console for development\n    {\n      name: 'console',\n      provider: ConsoleProvider,\n      logLevel: 'debug'\n    },\n    \u002F\u002F File for persistent storage\n    {\n      name: 'file',\n      provider: FileProvider,\n      logLevel: 'info',\n      options: {\n        filename: 'app.log',\n        directory: '.\u002Flogs'\n      }\n    },\n    \u002F\u002F JSON for log aggregation\n    {\n      name: 'json',\n      provider: JSONProvider,\n      logLevel: 'warn'\n    },\n    \u002F\u002F HTTP for external monitoring\n    {\n      name: 'http',\n      provider: HTTPProvider,\n      logLevel: 'error',\n      options: {\n        endpoint: 'https:\u002F\u002Flogs.myservice.com\u002Fapi\u002Flogs',\n        apiKey: process.env.LOGGING_API_KEY\n      }\n    }\n  ]\n});\n",[234,2160,2161,2179,2193,2201,2206,2210,2224,2234,2248,2253,2258,2262,2277,2288,2302,2311,2327,2341,2345,2349,2354,2358,2372,2382,2394,2398,2403,2407,2422,2433,2447,2455,2472,2493,2498,2503,2508],{"__ignoreMap":232},[237,2162,2163,2165,2167,2169,2171,2173,2175,2177],{"class":239,"line":240},[237,2164,294],{"class":251},[237,2166,297],{"class":247},[237,2168,321],{"class":300},[237,2170,324],{"class":251},[237,2172,297],{"class":247},[237,2174,329],{"class":300},[237,2176,332],{"class":251},[237,2178,335],{"class":247},[237,2180,2181,2183,2185,2187,2189,2191],{"class":239,"line":285},[237,2182,342],{"class":341},[237,2184,345],{"class":247},[237,2186,272],{"class":247},[237,2188,350],{"class":275},[237,2190,279],{"class":247},[237,2192,355],{"class":247},[237,2194,2195,2197,2199],{"class":239,"line":291},[237,2196,361],{"class":341},[237,2198,345],{"class":247},[237,2200,366],{"class":251},[237,2202,2203],{"class":239,"line":314},[237,2204,2205],{"class":1140},"    \u002F\u002F Console for development\n",[237,2207,2208],{"class":239,"line":338},[237,2209,372],{"class":247},[237,2211,2212,2214,2216,2218,2220,2222],{"class":239,"line":358},[237,2213,378],{"class":341},[237,2215,345],{"class":247},[237,2217,272],{"class":247},[237,2219,385],{"class":275},[237,2221,279],{"class":247},[237,2223,355],{"class":247},[237,2225,2226,2228,2230,2232],{"class":239,"line":369},[237,2227,395],{"class":341},[237,2229,345],{"class":247},[237,2231,263],{"class":251},[237,2233,355],{"class":247},[237,2235,2236,2239,2241,2243,2245],{"class":239,"line":375},[237,2237,2238],{"class":341},"      logLevel",[237,2240,345],{"class":247},[237,2242,272],{"class":247},[237,2244,350],{"class":275},[237,2246,2247],{"class":247},"'\n",[237,2249,2250],{"class":239,"line":392},[237,2251,2252],{"class":247},"    },\n",[237,2254,2255],{"class":239,"line":403},[237,2256,2257],{"class":1140},"    \u002F\u002F File for persistent storage\n",[237,2259,2260],{"class":239,"line":409},[237,2261,372],{"class":247},[237,2263,2264,2266,2268,2270,2273,2275],{"class":239,"line":415},[237,2265,378],{"class":341},[237,2267,345],{"class":247},[237,2269,272],{"class":247},[237,2271,2272],{"class":275},"file",[237,2274,279],{"class":247},[237,2276,355],{"class":247},[237,2278,2279,2281,2283,2286],{"class":239,"line":1201},[237,2280,395],{"class":341},[237,2282,345],{"class":247},[237,2284,2285],{"class":251}," FileProvider",[237,2287,355],{"class":247},[237,2289,2290,2292,2294,2296,2298,2300],{"class":239,"line":1206},[237,2291,2238],{"class":341},[237,2293,345],{"class":247},[237,2295,272],{"class":247},[237,2297,569],{"class":275},[237,2299,279],{"class":247},[237,2301,355],{"class":247},[237,2303,2304,2307,2309],{"class":239,"line":1212},[237,2305,2306],{"class":341},"      options",[237,2308,345],{"class":247},[237,2310,1135],{"class":247},[237,2312,2313,2316,2318,2320,2323,2325],{"class":239,"line":1217},[237,2314,2315],{"class":341},"        filename",[237,2317,345],{"class":247},[237,2319,272],{"class":247},[237,2321,2322],{"class":275},"app.log",[237,2324,279],{"class":247},[237,2326,355],{"class":247},[237,2328,2329,2332,2334,2336,2339],{"class":239,"line":1245},[237,2330,2331],{"class":341},"        directory",[237,2333,345],{"class":247},[237,2335,272],{"class":247},[237,2337,2338],{"class":275},".\u002Flogs",[237,2340,2247],{"class":247},[237,2342,2343],{"class":239,"line":1251},[237,2344,1786],{"class":247},[237,2346,2347],{"class":239,"line":1277},[237,2348,2252],{"class":247},[237,2350,2351],{"class":239,"line":1295},[237,2352,2353],{"class":1140},"    \u002F\u002F JSON for log aggregation\n",[237,2355,2356],{"class":239,"line":1300},[237,2357,372],{"class":247},[237,2359,2360,2362,2364,2366,2368,2370],{"class":239,"line":1305},[237,2361,378],{"class":341},[237,2363,345],{"class":247},[237,2365,272],{"class":247},[237,2367,596],{"class":275},[237,2369,279],{"class":247},[237,2371,355],{"class":247},[237,2373,2374,2376,2378,2380],{"class":239,"line":1333},[237,2375,395],{"class":341},[237,2377,345],{"class":247},[237,2379,508],{"class":251},[237,2381,355],{"class":247},[237,2383,2384,2386,2388,2390,2392],{"class":239,"line":1339},[237,2385,2238],{"class":341},[237,2387,345],{"class":247},[237,2389,272],{"class":247},[237,2391,832],{"class":275},[237,2393,2247],{"class":247},[237,2395,2396],{"class":239,"line":1361},[237,2397,2252],{"class":247},[237,2399,2400],{"class":239,"line":1366},[237,2401,2402],{"class":1140},"    \u002F\u002F HTTP for external monitoring\n",[237,2404,2405],{"class":239,"line":1371},[237,2406,372],{"class":247},[237,2408,2409,2411,2413,2415,2418,2420],{"class":239,"line":1393},[237,2410,378],{"class":341},[237,2412,345],{"class":247},[237,2414,272],{"class":247},[237,2416,2417],{"class":275},"http",[237,2419,279],{"class":247},[237,2421,355],{"class":247},[237,2423,2424,2426,2428,2431],{"class":239,"line":1399},[237,2425,395],{"class":341},[237,2427,345],{"class":247},[237,2429,2430],{"class":251}," HTTPProvider",[237,2432,355],{"class":247},[237,2434,2435,2437,2439,2441,2443,2445],{"class":239,"line":1418},[237,2436,2238],{"class":341},[237,2438,345],{"class":247},[237,2440,272],{"class":247},[237,2442,899],{"class":275},[237,2444,279],{"class":247},[237,2446,355],{"class":247},[237,2448,2449,2451,2453],{"class":239,"line":1423},[237,2450,2306],{"class":341},[237,2452,345],{"class":247},[237,2454,1135],{"class":247},[237,2456,2458,2461,2463,2465,2468,2470],{"class":239,"line":2457},32,[237,2459,2460],{"class":341},"        endpoint",[237,2462,345],{"class":247},[237,2464,272],{"class":247},[237,2466,2467],{"class":275},"https:\u002F\u002Flogs.myservice.com\u002Fapi\u002Flogs",[237,2469,279],{"class":247},[237,2471,355],{"class":247},[237,2473,2475,2478,2480,2483,2485,2488,2490],{"class":239,"line":2474},33,[237,2476,2477],{"class":341},"        apiKey",[237,2479,345],{"class":247},[237,2481,2482],{"class":251}," process",[237,2484,297],{"class":247},[237,2486,2487],{"class":251},"env",[237,2489,297],{"class":247},[237,2491,2492],{"class":251},"LOGGING_API_KEY\n",[237,2494,2496],{"class":239,"line":2495},34,[237,2497,1786],{"class":247},[237,2499,2501],{"class":239,"line":2500},35,[237,2502,406],{"class":247},[237,2504,2506],{"class":239,"line":2505},36,[237,2507,412],{"class":251},[237,2509,2511,2513,2515],{"class":239,"line":2510},37,[237,2512,418],{"class":247},[237,2514,421],{"class":251},[237,2516,282],{"class":247},[213,2518,2520],{"id":2519},"provider-not-outputting-logs","Provider Not Outputting Logs",[204,2522,2523,2526,2527,2530],{},[223,2524,2525],{},"Problem:"," Provider's ",[234,2528,2529],{},"processMessage()"," is not called",[204,2532,2533],{},[223,2534,2535],{},"Solutions:",[2537,2538,2539],"ol",{},[2540,2541,2542],"li",{},"Check log level hierarchy:",[227,2544,2546],{"className":229,"code":2545,"language":231,"meta":232,"style":232},"\u002F\u002F If global level is 'error', only errors reach providers\ncontainer.get(Logger).configure({\n  logLevel: 'debug',  \u002F\u002F Lower this\n  providers: [...]\n});\n",[234,2547,2548,2553,2571,2588,2602],{"__ignoreMap":232},[237,2549,2550],{"class":239,"line":240},[237,2551,2552],{"class":1140},"\u002F\u002F If global level is 'error', only errors reach providers\n",[237,2554,2555,2557,2559,2561,2563,2565,2567,2569],{"class":239,"line":285},[237,2556,294],{"class":251},[237,2558,297],{"class":247},[237,2560,321],{"class":300},[237,2562,324],{"class":251},[237,2564,297],{"class":247},[237,2566,329],{"class":300},[237,2568,332],{"class":251},[237,2570,335],{"class":247},[237,2572,2573,2575,2577,2579,2581,2583,2585],{"class":239,"line":291},[237,2574,342],{"class":341},[237,2576,345],{"class":247},[237,2578,272],{"class":247},[237,2580,350],{"class":275},[237,2582,279],{"class":247},[237,2584,255],{"class":247},[237,2586,2587],{"class":1140},"  \u002F\u002F Lower this\n",[237,2589,2590,2592,2594,2597,2599],{"class":239,"line":314},[237,2591,361],{"class":341},[237,2593,345],{"class":247},[237,2595,2596],{"class":251}," [",[237,2598,933],{"class":247},[237,2600,2601],{"class":251},"]\n",[237,2603,2604,2606,2608],{"class":239,"line":338},[237,2605,418],{"class":247},[237,2607,421],{"class":251},[237,2609,282],{"class":247},[2537,2611,2612],{"start":285},[2540,2613,2614],{},"Check provider-specific log level:",[227,2616,2618],{"className":229,"code":2617,"language":231,"meta":232,"style":232},"providers: [\n  {\n    name: 'custom',\n    provider: CustomProvider,\n    logLevel: 'debug'  \u002F\u002F This provider's level\n  }\n]\n",[234,2619,2620,2629,2634,2649,2660,2676,2680],{"__ignoreMap":232},[237,2621,2622,2625,2627],{"class":239,"line":240},[237,2623,2624],{"class":468},"providers",[237,2626,345],{"class":247},[237,2628,366],{"class":251},[237,2630,2631],{"class":239,"line":285},[237,2632,2633],{"class":247},"  {\n",[237,2635,2636,2639,2641,2643,2645,2647],{"class":239,"line":291},[237,2637,2638],{"class":341},"    name",[237,2640,345],{"class":247},[237,2642,272],{"class":247},[237,2644,1751],{"class":275},[237,2646,279],{"class":247},[237,2648,355],{"class":247},[237,2650,2651,2654,2656,2658],{"class":239,"line":314},[237,2652,2653],{"class":341},"    provider",[237,2655,345],{"class":247},[237,2657,1127],{"class":251},[237,2659,355],{"class":247},[237,2661,2662,2665,2667,2669,2671,2673],{"class":239,"line":338},[237,2663,2664],{"class":341},"    logLevel",[237,2666,345],{"class":247},[237,2668,272],{"class":247},[237,2670,350],{"class":275},[237,2672,279],{"class":247},[237,2674,2675],{"class":1140},"  \u002F\u002F This provider's level\n",[237,2677,2678],{"class":239,"line":358},[237,2679,1193],{"class":247},[237,2681,2682],{"class":239,"line":369},[237,2683,2601],{"class":251},[2537,2685,2686],{"start":291},[2540,2687,2688],{},"Verify provider is registered:",[227,2690,2692],{"className":229,"code":2691,"language":231,"meta":232,"style":232},"\u002F\u002F Make sure provider class is in providers array\nproviders: [\n  {\n    name: 'custom',\n    provider: CustomProvider  \u002F\u002F ✅ Correct\n  }\n]\n",[234,2693,2694,2699,2707,2711,2725,2737,2741],{"__ignoreMap":232},[237,2695,2696],{"class":239,"line":240},[237,2697,2698],{"class":1140},"\u002F\u002F Make sure provider class is in providers array\n",[237,2700,2701,2703,2705],{"class":239,"line":285},[237,2702,2624],{"class":468},[237,2704,345],{"class":247},[237,2706,366],{"class":251},[237,2708,2709],{"class":239,"line":291},[237,2710,2633],{"class":247},[237,2712,2713,2715,2717,2719,2721,2723],{"class":239,"line":314},[237,2714,2638],{"class":341},[237,2716,345],{"class":247},[237,2718,272],{"class":247},[237,2720,1751],{"class":275},[237,2722,279],{"class":247},[237,2724,355],{"class":247},[237,2726,2727,2729,2731,2734],{"class":239,"line":338},[237,2728,2653],{"class":341},[237,2730,345],{"class":247},[237,2732,2733],{"class":251}," CustomProvider  ",[237,2735,2736],{"class":1140},"\u002F\u002F ✅ Correct\n",[237,2738,2739],{"class":239,"line":358},[237,2740,1193],{"class":247},[237,2742,2743],{"class":239,"line":369},[237,2744,2601],{"class":251},[213,2746,2748],{"id":2747},"provider-initialization-error","Provider Initialization Error",[204,2750,2751,2753],{},[223,2752,2525],{}," \"Failed to initialize logger provider\"",[204,2755,2756],{},[223,2757,2535],{},[2537,2759,2760],{},[2540,2761,2762,2763,2766],{},"Check ",[234,2764,2765],{},"initialize()"," method doesn't throw:",[227,2768,2770],{"className":229,"code":2769,"language":231,"meta":232,"style":232},"public initialize(options: any): void {\n  try {\n    \u002F\u002F initialization code\n  } catch (error) {\n    console.error('Provider init failed:', error);\n    \u002F\u002F Don't throw - handle gracefully\n  }\n}\n",[234,2771,2772,2787,2794,2799,2816,2842,2847,2851],{"__ignoreMap":232},[237,2773,2774,2777,2780,2783,2785],{"class":239,"line":240},[237,2775,2776],{"class":251},"public ",[237,2778,2779],{"class":300},"initialize",[237,2781,2782],{"class":251},"(options: any): ",[237,2784,2070],{"class":247},[237,2786,1135],{"class":247},[237,2788,2789,2792],{"class":239,"line":285},[237,2790,2791],{"class":243},"  try",[237,2793,1135],{"class":247},[237,2795,2796],{"class":239,"line":291},[237,2797,2798],{"class":1140},"    \u002F\u002F initialization code\n",[237,2800,2801,2803,2806,2809,2811,2814],{"class":239,"line":314},[237,2802,1796],{"class":247},[237,2804,2805],{"class":243}," catch",[237,2807,2808],{"class":341}," (",[237,2810,899],{"class":251},[237,2812,2813],{"class":341},") ",[237,2815,335],{"class":247},[237,2817,2818,2820,2822,2824,2826,2828,2831,2833,2835,2838,2840],{"class":239,"line":338},[237,2819,1402],{"class":251},[237,2821,297],{"class":247},[237,2823,899],{"class":300},[237,2825,332],{"class":341},[237,2827,279],{"class":247},[237,2829,2830],{"class":275},"Provider init failed:",[237,2832,279],{"class":247},[237,2834,255],{"class":247},[237,2836,2837],{"class":251}," error",[237,2839,421],{"class":341},[237,2841,282],{"class":247},[237,2843,2844],{"class":239,"line":358},[237,2845,2846],{"class":1140},"    \u002F\u002F Don't throw - handle gracefully\n",[237,2848,2849],{"class":239,"line":369},[237,2850,1193],{"class":247},[237,2852,2853],{"class":239,"line":375},[237,2854,713],{"class":247},[2537,2856,2857],{"start":285},[2540,2858,2859],{},"Verify provider is bound in container:",[227,2861,2863],{"className":229,"code":2862,"language":231,"meta":232,"style":232},"container.bind(CustomProvider);\n",[234,2864,2865],{"__ignoreMap":232},[237,2866,2867,2869,2871,2873,2876],{"class":239,"line":240},[237,2868,294],{"class":251},[237,2870,297],{"class":247},[237,2872,301],{"class":300},[237,2874,2875],{"class":251},"(CustomProvider)",[237,2877,282],{"class":247},[2537,2879,2880],{"start":291},[2540,2881,2882],{},"Check provider options:",[227,2884,2886],{"className":229,"code":2885,"language":231,"meta":232,"style":232},"providers: [\n  {\n    name: 'custom',\n    provider: CustomProvider,\n    options: {\n      \u002F\u002F Make sure all required options are provided\n      requiredOption: 'value'\n    }\n  }\n]\n",[234,2887,2888,2896,2900,2914,2924,2933,2938,2952,2956,2960],{"__ignoreMap":232},[237,2889,2890,2892,2894],{"class":239,"line":240},[237,2891,2624],{"class":468},[237,2893,345],{"class":247},[237,2895,366],{"class":251},[237,2897,2898],{"class":239,"line":285},[237,2899,2633],{"class":247},[237,2901,2902,2904,2906,2908,2910,2912],{"class":239,"line":291},[237,2903,2638],{"class":341},[237,2905,345],{"class":247},[237,2907,272],{"class":247},[237,2909,1751],{"class":275},[237,2911,279],{"class":247},[237,2913,355],{"class":247},[237,2915,2916,2918,2920,2922],{"class":239,"line":314},[237,2917,2653],{"class":341},[237,2919,345],{"class":247},[237,2921,1127],{"class":251},[237,2923,355],{"class":247},[237,2925,2926,2929,2931],{"class":239,"line":338},[237,2927,2928],{"class":341},"    options",[237,2930,345],{"class":247},[237,2932,1135],{"class":247},[237,2934,2935],{"class":239,"line":358},[237,2936,2937],{"class":1140},"      \u002F\u002F Make sure all required options are provided\n",[237,2939,2940,2943,2945,2947,2950],{"class":239,"line":369},[237,2941,2942],{"class":341},"      requiredOption",[237,2944,345],{"class":247},[237,2946,272],{"class":247},[237,2948,2949],{"class":275},"value",[237,2951,2247],{"class":247},[237,2953,2954],{"class":239,"line":375},[237,2955,406],{"class":247},[237,2957,2958],{"class":239,"line":392},[237,2959,1193],{"class":247},[237,2961,2962],{"class":239,"line":403},[237,2963,2601],{"class":251},[213,2965,2967],{"id":2966},"provider-missing-dependency","Provider Missing Dependency",[204,2969,2970,2972],{},[223,2971,2525],{}," Injected dependency is undefined",[204,2974,2975,2978],{},[223,2976,2977],{},"Solution:"," Make sure dependency is registered before logger configuration:",[227,2980,2982],{"className":229,"code":2981,"language":231,"meta":232,"style":232},"\u002F\u002F Register dependencies first\ncontainer.bind(Database);\ncontainer.bind(CustomProvider);\n\n\u002F\u002F Then configure logger\ncontainer.bind(Logger, BaseLogger);\ncontainer.get(Logger).configure({\n  providers: [\n    {\n      name: 'custom',\n      provider: CustomProvider\n    }\n  ]\n});\n",[234,2983,2984,2989,3002,3014,3018,3023,3039,3057,3065,3069,3083,3092,3096,3100],{"__ignoreMap":232},[237,2985,2986],{"class":239,"line":240},[237,2987,2988],{"class":1140},"\u002F\u002F Register dependencies first\n",[237,2990,2991,2993,2995,2997,3000],{"class":239,"line":285},[237,2992,294],{"class":251},[237,2994,297],{"class":247},[237,2996,301],{"class":300},[237,2998,2999],{"class":251},"(Database)",[237,3001,282],{"class":247},[237,3003,3004,3006,3008,3010,3012],{"class":239,"line":291},[237,3005,294],{"class":251},[237,3007,297],{"class":247},[237,3009,301],{"class":300},[237,3011,2875],{"class":251},[237,3013,282],{"class":247},[237,3015,3016],{"class":239,"line":314},[237,3017,288],{"emptyLinePlaceholder":56},[237,3019,3020],{"class":239,"line":338},[237,3021,3022],{"class":1140},"\u002F\u002F Then configure logger\n",[237,3024,3025,3027,3029,3031,3033,3035,3037],{"class":239,"line":358},[237,3026,294],{"class":251},[237,3028,297],{"class":247},[237,3030,301],{"class":300},[237,3032,304],{"class":251},[237,3034,255],{"class":247},[237,3036,309],{"class":251},[237,3038,282],{"class":247},[237,3040,3041,3043,3045,3047,3049,3051,3053,3055],{"class":239,"line":369},[237,3042,294],{"class":251},[237,3044,297],{"class":247},[237,3046,321],{"class":300},[237,3048,324],{"class":251},[237,3050,297],{"class":247},[237,3052,329],{"class":300},[237,3054,332],{"class":251},[237,3056,335],{"class":247},[237,3058,3059,3061,3063],{"class":239,"line":375},[237,3060,361],{"class":341},[237,3062,345],{"class":247},[237,3064,366],{"class":251},[237,3066,3067],{"class":239,"line":392},[237,3068,372],{"class":247},[237,3070,3071,3073,3075,3077,3079,3081],{"class":239,"line":403},[237,3072,378],{"class":341},[237,3074,345],{"class":247},[237,3076,272],{"class":247},[237,3078,1751],{"class":275},[237,3080,279],{"class":247},[237,3082,355],{"class":247},[237,3084,3085,3087,3089],{"class":239,"line":409},[237,3086,395],{"class":341},[237,3088,345],{"class":247},[237,3090,3091],{"class":251}," CustomProvider\n",[237,3093,3094],{"class":239,"line":415},[237,3095,406],{"class":247},[237,3097,3098],{"class":239,"line":1201},[237,3099,412],{"class":251},[237,3101,3102,3104,3106],{"class":239,"line":1206},[237,3103,418],{"class":247},[237,3105,421],{"class":251},[237,3107,282],{"class":247},[213,3109,3111],{"id":3110},"async-provider-not-working","Async Provider Not Working",[204,3113,3114,3116,3117,3119],{},[223,3115,2525],{}," Async ",[234,3118,2765],{}," doesn't complete before logging",[204,3121,3122,3124],{},[223,3123,2977],{}," Await logger configuration:",[227,3126,3128],{"className":229,"code":3127,"language":231,"meta":232,"style":232},"container.bind(Logger, BaseLogger);\n\nconst logger = container.get(Logger);\n\n\u002F\u002F Await async configuration\nawait logger.configure({\n  providers: [\n    {\n      name: 'async',\n      provider: AsyncProvider,\n      options: { ... }\n    }\n  ]\n});\n",[234,3129,3130,3146,3150,3171,3175,3180,3196,3204,3208,3223,3233,3245,3249,3253],{"__ignoreMap":232},[237,3131,3132,3134,3136,3138,3140,3142,3144],{"class":239,"line":240},[237,3133,294],{"class":251},[237,3135,297],{"class":247},[237,3137,301],{"class":300},[237,3139,304],{"class":251},[237,3141,255],{"class":247},[237,3143,309],{"class":251},[237,3145,282],{"class":247},[237,3147,3148],{"class":239,"line":285},[237,3149,288],{"emptyLinePlaceholder":56},[237,3151,3152,3155,3158,3160,3163,3165,3167,3169],{"class":239,"line":291},[237,3153,3154],{"class":646},"const",[237,3156,3157],{"class":251}," logger ",[237,3159,462],{"class":247},[237,3161,3162],{"class":251}," container",[237,3164,297],{"class":247},[237,3166,321],{"class":300},[237,3168,324],{"class":251},[237,3170,282],{"class":247},[237,3172,3173],{"class":239,"line":314},[237,3174,288],{"emptyLinePlaceholder":56},[237,3176,3177],{"class":239,"line":338},[237,3178,3179],{"class":1140},"\u002F\u002F Await async configuration\n",[237,3181,3182,3185,3188,3190,3192,3194],{"class":239,"line":358},[237,3183,3184],{"class":243},"await",[237,3186,3187],{"class":251}," logger",[237,3189,297],{"class":247},[237,3191,329],{"class":300},[237,3193,332],{"class":251},[237,3195,335],{"class":247},[237,3197,3198,3200,3202],{"class":239,"line":369},[237,3199,361],{"class":341},[237,3201,345],{"class":247},[237,3203,366],{"class":251},[237,3205,3206],{"class":239,"line":375},[237,3207,372],{"class":247},[237,3209,3210,3212,3214,3216,3219,3221],{"class":239,"line":392},[237,3211,378],{"class":341},[237,3213,345],{"class":247},[237,3215,272],{"class":247},[237,3217,3218],{"class":275},"async",[237,3220,279],{"class":247},[237,3222,355],{"class":247},[237,3224,3225,3227,3229,3231],{"class":239,"line":403},[237,3226,395],{"class":341},[237,3228,345],{"class":247},[237,3230,2018],{"class":251},[237,3232,355],{"class":247},[237,3234,3235,3237,3239,3241,3243],{"class":239,"line":409},[237,3236,2306],{"class":341},[237,3238,345],{"class":247},[237,3240,248],{"class":247},[237,3242,1778],{"class":247},[237,3244,1781],{"class":247},[237,3246,3247],{"class":239,"line":415},[237,3248,406],{"class":247},[237,3250,3251],{"class":239,"line":1201},[237,3252,412],{"class":251},[237,3254,3255,3257,3259],{"class":239,"line":1206},[237,3256,418],{"class":247},[237,3258,421],{"class":251},[237,3260,282],{"class":247},[3262,3263,3264],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":232,"searchDepth":240,"depth":285,"links":3266},[3267,3271,3275,3280],{"id":210,"depth":285,"text":211,"children":3268},[3269,3270],{"id":215,"depth":291,"text":216},{"id":478,"depth":291,"text":479},{"id":1054,"depth":285,"text":1055,"children":3272},[3273,3274],{"id":1061,"depth":291,"text":1062},{"id":1428,"depth":291,"text":1429},{"id":1587,"depth":285,"text":1588,"children":3276},[3277,3278,3279],{"id":1591,"depth":291,"text":1592},{"id":1807,"depth":291,"text":1808},{"id":2000,"depth":291,"text":2001},{"id":2151,"depth":285,"text":2152,"children":3281},[3282,3283,3284,3285],{"id":2519,"depth":291,"text":2520},{"id":2747,"depth":291,"text":2748},{"id":2966,"depth":291,"text":2967},{"id":3110,"depth":291,"text":3111},"Built-in log providers and guide to creating custom drivers","md",null,{},{"title":86,"description":3286},"AY_cahIisj-S9Obazd6EVcCnXVSOLtI9Yxh8gA9EnPM",[3293,3295],{"title":66,"path":83,"stem":84,"description":3294,"children":-1},"Flexible and extensible logging system for Vercube applications",{"title":90,"path":91,"stem":92,"description":3296,"children":-1},"Complete API reference for Logger module",1775552783430]