[{"data":1,"prerenderedAt":2509},["ShallowReactive",2],{"navigation":3,"docs-path-index":152,"-docs-modules-logger-overview":198,"-docs-modules-logger-overview-surround":2504},[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":66,"body":200,"description":2498,"extension":2499,"links":2500,"meta":2501,"navigation":56,"path":83,"seo":2502,"stem":84,"__hash__":2503},"docs\u002Fdocs\u002F3.modules\u002F2.logger\u002F0.overview.md",{"type":201,"value":202,"toc":2482},"minimark",[203,207,211,279,283,1609,1613,1615,1618,1647,1651,1654,1658,1661,1669,1672,1695,1699,1706,1709,1713,1716,1846,1850,1853,2044,2048,2051,2315,2319,2322,2478],[204,205,206],"p",{},"The Logger module provides a powerful, flexible logging system for Vercube applications. Built around a provider-based architecture, it allows you to log messages at different levels (debug, info, warn, error) and output them to multiple destinations simultaneously through pluggable drivers.",[208,209,18],"h2",{"id":210},"installation",[212,213,214,244,262],"code-group",{},[215,216,222],"pre",{"className":217,"code":218,"filename":219,"language":220,"meta":221,"style":221},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$ pnpm add @vercube\u002Flogger\n","pnpm","bash","",[223,224,225],"code",{"__ignoreMap":221},[226,227,230,234,238,241],"span",{"class":228,"line":229},"line",1,[226,231,233],{"class":232},"sBMFI","$",[226,235,237],{"class":236},"sfazB"," pnpm",[226,239,240],{"class":236}," add",[226,242,243],{"class":236}," @vercube\u002Flogger\n",[215,245,248],{"className":217,"code":246,"filename":247,"language":220,"meta":221,"style":221},"$ npm install @vercube\u002Flogger\n","npm",[223,249,250],{"__ignoreMap":221},[226,251,252,254,257,260],{"class":228,"line":229},[226,253,233],{"class":232},[226,255,256],{"class":236}," npm",[226,258,259],{"class":236}," install",[226,261,243],{"class":236},[215,263,266],{"className":217,"code":264,"filename":265,"language":220,"meta":221,"style":221},"$ bun install @vercube\u002Flogger\n","bun",[223,267,268],{"__ignoreMap":221},[226,269,270,272,275,277],{"class":228,"line":229},[226,271,233],{"class":232},[226,273,274],{"class":236}," bun",[226,276,259],{"class":236},[226,278,243],{"class":236},[208,280,282],{"id":281},"quick-start","Quick Start",[284,285,286,291,294,590,594,597,1080,1084,1087],"steps",{},[287,288,290],"h3",{"id":289},"register-logger-in-container","Register Logger in Container",[204,292,293],{},"Set up the logger in your DI container and configure providers. This is typically done once during application bootstrap.",[215,295,300],{"className":296,"code":297,"filename":298,"language":299,"meta":221,"style":221},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Container } from '@vercube\u002Fdi';\nimport { Logger, BaseLogger, ConsoleProvider } from '@vercube\u002Flogger';\n\nexport function setupContainer(container: Container): void {\n  \u002F\u002F Bind BaseLogger implementation to Logger interface\n  container.bind(Logger, BaseLogger);\n  \n  \u002F\u002F Configure the logger\n  container.get(Logger).configure({\n    logLevel: 'info',\n    providers: [\n      {\n        name: 'console',\n        provider: ConsoleProvider,\n        logLevel: 'debug'  \u002F\u002F This provider logs everything\n      }\n    ]\n  });\n}\n","src\u002Fcontainer.ts","ts",[223,301,302,334,368,374,409,416,442,448,454,480,498,509,515,532,544,562,568,574,584],{"__ignoreMap":221},[226,303,304,308,312,316,319,322,325,328,331],{"class":228,"line":229},[226,305,307],{"class":306},"s7zQu","import",[226,309,311],{"class":310},"sMK4o"," {",[226,313,315],{"class":314},"sTEyZ"," Container",[226,317,318],{"class":310}," }",[226,320,321],{"class":306}," from",[226,323,324],{"class":310}," '",[226,326,327],{"class":236},"@vercube\u002Fdi",[226,329,330],{"class":310},"'",[226,332,333],{"class":310},";\n",[226,335,337,339,341,344,347,350,352,355,357,359,361,364,366],{"class":228,"line":336},2,[226,338,307],{"class":306},[226,340,311],{"class":310},[226,342,343],{"class":314}," Logger",[226,345,346],{"class":310},",",[226,348,349],{"class":314}," BaseLogger",[226,351,346],{"class":310},[226,353,354],{"class":314}," ConsoleProvider",[226,356,318],{"class":310},[226,358,321],{"class":306},[226,360,324],{"class":310},[226,362,363],{"class":236},"@vercube\u002Flogger",[226,365,330],{"class":310},[226,367,333],{"class":310},[226,369,371],{"class":228,"line":370},3,[226,372,373],{"emptyLinePlaceholder":56},"\n",[226,375,377,380,384,388,391,395,398,400,403,406],{"class":228,"line":376},4,[226,378,379],{"class":306},"export",[226,381,383],{"class":382},"spNyl"," function",[226,385,387],{"class":386},"s2Zo4"," setupContainer",[226,389,390],{"class":310},"(",[226,392,394],{"class":393},"sHdIc","container",[226,396,397],{"class":310},":",[226,399,315],{"class":232},[226,401,402],{"class":310},"):",[226,404,405],{"class":232}," void",[226,407,408],{"class":310}," {\n",[226,410,412],{"class":228,"line":411},5,[226,413,415],{"class":414},"sHwdD","  \u002F\u002F Bind BaseLogger implementation to Logger interface\n",[226,417,419,422,425,428,431,433,435,437,440],{"class":228,"line":418},6,[226,420,421],{"class":314},"  container",[226,423,424],{"class":310},".",[226,426,427],{"class":386},"bind",[226,429,390],{"class":430},"swJcz",[226,432,78],{"class":314},[226,434,346],{"class":310},[226,436,349],{"class":314},[226,438,439],{"class":430},")",[226,441,333],{"class":310},[226,443,445],{"class":228,"line":444},7,[226,446,447],{"class":430},"  \n",[226,449,451],{"class":228,"line":450},8,[226,452,453],{"class":414},"  \u002F\u002F Configure the logger\n",[226,455,457,459,461,464,466,468,470,472,475,477],{"class":228,"line":456},9,[226,458,421],{"class":314},[226,460,424],{"class":310},[226,462,463],{"class":386},"get",[226,465,390],{"class":430},[226,467,78],{"class":314},[226,469,439],{"class":430},[226,471,424],{"class":310},[226,473,474],{"class":386},"configure",[226,476,390],{"class":430},[226,478,479],{"class":310},"{\n",[226,481,483,486,488,490,493,495],{"class":228,"line":482},10,[226,484,485],{"class":430},"    logLevel",[226,487,397],{"class":310},[226,489,324],{"class":310},[226,491,492],{"class":236},"info",[226,494,330],{"class":310},[226,496,497],{"class":310},",\n",[226,499,501,504,506],{"class":228,"line":500},11,[226,502,503],{"class":430},"    providers",[226,505,397],{"class":310},[226,507,508],{"class":430}," [\n",[226,510,512],{"class":228,"line":511},12,[226,513,514],{"class":310},"      {\n",[226,516,518,521,523,525,528,530],{"class":228,"line":517},13,[226,519,520],{"class":430},"        name",[226,522,397],{"class":310},[226,524,324],{"class":310},[226,526,527],{"class":236},"console",[226,529,330],{"class":310},[226,531,497],{"class":310},[226,533,535,538,540,542],{"class":228,"line":534},14,[226,536,537],{"class":430},"        provider",[226,539,397],{"class":310},[226,541,354],{"class":314},[226,543,497],{"class":310},[226,545,547,550,552,554,557,559],{"class":228,"line":546},15,[226,548,549],{"class":430},"        logLevel",[226,551,397],{"class":310},[226,553,324],{"class":310},[226,555,556],{"class":236},"debug",[226,558,330],{"class":310},[226,560,561],{"class":414},"  \u002F\u002F This provider logs everything\n",[226,563,565],{"class":228,"line":564},16,[226,566,567],{"class":310},"      }\n",[226,569,571],{"class":228,"line":570},17,[226,572,573],{"class":430},"    ]\n",[226,575,577,580,582],{"class":228,"line":576},18,[226,578,579],{"class":310},"  }",[226,581,439],{"class":430},[226,583,333],{"class":310},[226,585,587],{"class":228,"line":586},19,[226,588,589],{"class":310},"}\n",[287,591,593],{"id":592},"inject-logger-into-services","Inject Logger into Services",[204,595,596],{},"Use dependency injection to access the logger in your services. Log important operations and errors for debugging.",[215,598,601],{"className":296,"code":599,"filename":600,"language":299,"meta":221,"style":221},"import { Inject } from '@vercube\u002Fdi';\nimport { Logger } from '@vercube\u002Flogger';\n\nexport class UserService {\n  @Inject(Logger)\n  private logger!: Logger;\n  \n  async createUser(data: CreateUserDto) {\n    this.logger.debug('Creating user with data:', data);\n    \n    try {\n      const user = await this.database.createUser(data);\n      this.logger.info('User created successfully', { userId: user.id });\n      return user;\n    } catch (error) {\n      this.logger.error('Failed to create user', error);\n      throw error;\n    }\n  }\n  \n  async findUser(id: string) {\n    this.logger.debug(`Looking up user: ${id}`);\n    const user = await this.database.findUser(id);\n    \n    if (!user) {\n      this.logger.warn(`User not found: ${id}`);\n      return null;\n    }\n    \n    return user;\n  }\n}\n","src\u002Fservices\u002FUserService.ts",[223,602,603,624,644,648,660,671,686,690,712,742,747,754,787,829,838,857,885,894,899,904,909,930,961,990,995,1013,1042,1050,1055,1060,1070,1075],{"__ignoreMap":221},[226,604,605,607,609,612,614,616,618,620,622],{"class":228,"line":229},[226,606,307],{"class":306},[226,608,311],{"class":310},[226,610,611],{"class":314}," Inject",[226,613,318],{"class":310},[226,615,321],{"class":306},[226,617,324],{"class":310},[226,619,327],{"class":236},[226,621,330],{"class":310},[226,623,333],{"class":310},[226,625,626,628,630,632,634,636,638,640,642],{"class":228,"line":336},[226,627,307],{"class":306},[226,629,311],{"class":310},[226,631,343],{"class":314},[226,633,318],{"class":310},[226,635,321],{"class":306},[226,637,324],{"class":310},[226,639,363],{"class":236},[226,641,330],{"class":310},[226,643,333],{"class":310},[226,645,646],{"class":228,"line":370},[226,647,373],{"emptyLinePlaceholder":56},[226,649,650,652,655,658],{"class":228,"line":376},[226,651,379],{"class":306},[226,653,654],{"class":382}," class",[226,656,657],{"class":232}," UserService",[226,659,408],{"class":310},[226,661,662,665,668],{"class":228,"line":411},[226,663,664],{"class":310},"  @",[226,666,667],{"class":386},"Inject",[226,669,670],{"class":314},"(Logger)\n",[226,672,673,676,679,682,684],{"class":228,"line":418},[226,674,675],{"class":382},"  private",[226,677,678],{"class":430}," logger",[226,680,681],{"class":310},"!:",[226,683,343],{"class":232},[226,685,333],{"class":310},[226,687,688],{"class":228,"line":444},[226,689,447],{"class":314},[226,691,692,695,698,700,703,705,708,710],{"class":228,"line":450},[226,693,694],{"class":382},"  async",[226,696,697],{"class":430}," createUser",[226,699,390],{"class":310},[226,701,702],{"class":393},"data",[226,704,397],{"class":310},[226,706,707],{"class":232}," CreateUserDto",[226,709,439],{"class":310},[226,711,408],{"class":310},[226,713,714,717,720,722,724,726,728,731,733,735,738,740],{"class":228,"line":456},[226,715,716],{"class":310},"    this.",[226,718,719],{"class":314},"logger",[226,721,424],{"class":310},[226,723,556],{"class":386},[226,725,390],{"class":430},[226,727,330],{"class":310},[226,729,730],{"class":236},"Creating user with data:",[226,732,330],{"class":310},[226,734,346],{"class":310},[226,736,737],{"class":314}," data",[226,739,439],{"class":430},[226,741,333],{"class":310},[226,743,744],{"class":228,"line":482},[226,745,746],{"class":430},"    \n",[226,748,749,752],{"class":228,"line":500},[226,750,751],{"class":306},"    try",[226,753,408],{"class":310},[226,755,756,759,762,765,768,771,774,776,779,781,783,785],{"class":228,"line":511},[226,757,758],{"class":382},"      const",[226,760,761],{"class":314}," user",[226,763,764],{"class":310}," =",[226,766,767],{"class":306}," await",[226,769,770],{"class":310}," this.",[226,772,773],{"class":314},"database",[226,775,424],{"class":310},[226,777,778],{"class":386},"createUser",[226,780,390],{"class":430},[226,782,702],{"class":314},[226,784,439],{"class":430},[226,786,333],{"class":310},[226,788,789,792,794,796,798,800,802,805,807,809,811,814,816,818,820,823,825,827],{"class":228,"line":517},[226,790,791],{"class":310},"      this.",[226,793,719],{"class":314},[226,795,424],{"class":310},[226,797,492],{"class":386},[226,799,390],{"class":430},[226,801,330],{"class":310},[226,803,804],{"class":236},"User created successfully",[226,806,330],{"class":310},[226,808,346],{"class":310},[226,810,311],{"class":310},[226,812,813],{"class":430}," userId",[226,815,397],{"class":310},[226,817,761],{"class":314},[226,819,424],{"class":310},[226,821,822],{"class":314},"id",[226,824,318],{"class":310},[226,826,439],{"class":430},[226,828,333],{"class":310},[226,830,831,834,836],{"class":228,"line":534},[226,832,833],{"class":306},"      return",[226,835,761],{"class":314},[226,837,333],{"class":310},[226,839,840,843,846,849,852,855],{"class":228,"line":546},[226,841,842],{"class":310},"    }",[226,844,845],{"class":306}," catch",[226,847,848],{"class":430}," (",[226,850,851],{"class":314},"error",[226,853,854],{"class":430},") ",[226,856,479],{"class":310},[226,858,859,861,863,865,867,869,871,874,876,878,881,883],{"class":228,"line":564},[226,860,791],{"class":310},[226,862,719],{"class":314},[226,864,424],{"class":310},[226,866,851],{"class":386},[226,868,390],{"class":430},[226,870,330],{"class":310},[226,872,873],{"class":236},"Failed to create user",[226,875,330],{"class":310},[226,877,346],{"class":310},[226,879,880],{"class":314}," error",[226,882,439],{"class":430},[226,884,333],{"class":310},[226,886,887,890,892],{"class":228,"line":570},[226,888,889],{"class":306},"      throw",[226,891,880],{"class":314},[226,893,333],{"class":310},[226,895,896],{"class":228,"line":576},[226,897,898],{"class":310},"    }\n",[226,900,901],{"class":228,"line":586},[226,902,903],{"class":310},"  }\n",[226,905,907],{"class":228,"line":906},20,[226,908,447],{"class":314},[226,910,912,914,917,919,921,923,926,928],{"class":228,"line":911},21,[226,913,694],{"class":382},[226,915,916],{"class":430}," findUser",[226,918,390],{"class":310},[226,920,822],{"class":393},[226,922,397],{"class":310},[226,924,925],{"class":232}," string",[226,927,439],{"class":310},[226,929,408],{"class":310},[226,931,933,935,937,939,941,943,946,949,952,954,957,959],{"class":228,"line":932},22,[226,934,716],{"class":310},[226,936,719],{"class":314},[226,938,424],{"class":310},[226,940,556],{"class":386},[226,942,390],{"class":430},[226,944,945],{"class":310},"`",[226,947,948],{"class":236},"Looking up user: ",[226,950,951],{"class":310},"${",[226,953,822],{"class":314},[226,955,956],{"class":310},"}`",[226,958,439],{"class":430},[226,960,333],{"class":310},[226,962,964,967,969,971,973,975,977,979,982,984,986,988],{"class":228,"line":963},23,[226,965,966],{"class":382},"    const",[226,968,761],{"class":314},[226,970,764],{"class":310},[226,972,767],{"class":306},[226,974,770],{"class":310},[226,976,773],{"class":314},[226,978,424],{"class":310},[226,980,981],{"class":386},"findUser",[226,983,390],{"class":430},[226,985,822],{"class":314},[226,987,439],{"class":430},[226,989,333],{"class":310},[226,991,993],{"class":228,"line":992},24,[226,994,746],{"class":430},[226,996,998,1001,1003,1006,1009,1011],{"class":228,"line":997},25,[226,999,1000],{"class":306},"    if",[226,1002,848],{"class":430},[226,1004,1005],{"class":310},"!",[226,1007,1008],{"class":314},"user",[226,1010,854],{"class":430},[226,1012,479],{"class":310},[226,1014,1016,1018,1020,1022,1025,1027,1029,1032,1034,1036,1038,1040],{"class":228,"line":1015},26,[226,1017,791],{"class":310},[226,1019,719],{"class":314},[226,1021,424],{"class":310},[226,1023,1024],{"class":386},"warn",[226,1026,390],{"class":430},[226,1028,945],{"class":310},[226,1030,1031],{"class":236},"User not found: ",[226,1033,951],{"class":310},[226,1035,822],{"class":314},[226,1037,956],{"class":310},[226,1039,439],{"class":430},[226,1041,333],{"class":310},[226,1043,1045,1047],{"class":228,"line":1044},27,[226,1046,833],{"class":306},[226,1048,1049],{"class":310}," null;\n",[226,1051,1053],{"class":228,"line":1052},28,[226,1054,898],{"class":310},[226,1056,1058],{"class":228,"line":1057},29,[226,1059,746],{"class":430},[226,1061,1063,1066,1068],{"class":228,"line":1062},30,[226,1064,1065],{"class":306},"    return",[226,1067,761],{"class":314},[226,1069,333],{"class":310},[226,1071,1073],{"class":228,"line":1072},31,[226,1074,903],{"class":310},[226,1076,1078],{"class":228,"line":1077},32,[226,1079,589],{"class":310},[287,1081,1083],{"id":1082},"use-logger-in-controllers","Use Logger in Controllers",[204,1085,1086],{},"Inject the logger into controllers to track incoming requests. This helps with monitoring and debugging API endpoints.",[215,1088,1091],{"className":296,"code":1089,"filename":1090,"language":299,"meta":221,"style":221},"import { Controller, Get, Post } from '@vercube\u002Fcore';\nimport { Inject } from '@vercube\u002Fdi';\nimport { Logger } from '@vercube\u002Flogger';\n\n@Controller('\u002Fusers')\nexport class UserController {\n  @Inject(Logger)\n  private logger!: Logger;\n  \n  @Inject(UserService)\n  private userService!: UserService;\n  \n  @Post('\u002F')\n  async create(req: Request) {\n    this.logger.info('POST \u002Fusers - Creating new user');\n    \n    const data = await req.json();\n    const user = await this.userService.createUser(data);\n    \n    return Response.json(user);\n  }\n  \n  @Get('\u002F:id')\n  async findOne(req: Request, params: { id: string }) {\n    this.logger.debug(`GET \u002Fusers\u002F${params.id}`);\n    \n    const user = await this.userService.findUser(params.id);\n    \n    if (!user) {\n      return new Response('Not found', { status: 404 });\n    }\n    \n    return Response.json(user);\n  }\n}\n","src\u002Fcontrollers\u002FUserController.ts",[223,1092,1093,1125,1145,1165,1169,1189,1200,1208,1220,1224,1233,1246,1250,1268,1289,1312,1316,1339,1366,1370,1389,1393,1397,1415,1451,1483,1487,1517,1521,1535,1572,1576,1580,1599,1604],{"__ignoreMap":221},[226,1094,1095,1097,1099,1102,1104,1107,1109,1112,1114,1116,1118,1121,1123],{"class":228,"line":229},[226,1096,307],{"class":306},[226,1098,311],{"class":310},[226,1100,1101],{"class":314}," Controller",[226,1103,346],{"class":310},[226,1105,1106],{"class":314}," Get",[226,1108,346],{"class":310},[226,1110,1111],{"class":314}," Post",[226,1113,318],{"class":310},[226,1115,321],{"class":306},[226,1117,324],{"class":310},[226,1119,1120],{"class":236},"@vercube\u002Fcore",[226,1122,330],{"class":310},[226,1124,333],{"class":310},[226,1126,1127,1129,1131,1133,1135,1137,1139,1141,1143],{"class":228,"line":336},[226,1128,307],{"class":306},[226,1130,311],{"class":310},[226,1132,611],{"class":314},[226,1134,318],{"class":310},[226,1136,321],{"class":306},[226,1138,324],{"class":310},[226,1140,327],{"class":236},[226,1142,330],{"class":310},[226,1144,333],{"class":310},[226,1146,1147,1149,1151,1153,1155,1157,1159,1161,1163],{"class":228,"line":370},[226,1148,307],{"class":306},[226,1150,311],{"class":310},[226,1152,343],{"class":314},[226,1154,318],{"class":310},[226,1156,321],{"class":306},[226,1158,324],{"class":310},[226,1160,363],{"class":236},[226,1162,330],{"class":310},[226,1164,333],{"class":310},[226,1166,1167],{"class":228,"line":376},[226,1168,373],{"emptyLinePlaceholder":56},[226,1170,1171,1174,1177,1179,1181,1184,1186],{"class":228,"line":411},[226,1172,1173],{"class":310},"@",[226,1175,1176],{"class":386},"Controller",[226,1178,390],{"class":314},[226,1180,330],{"class":310},[226,1182,1183],{"class":236},"\u002Fusers",[226,1185,330],{"class":310},[226,1187,1188],{"class":314},")\n",[226,1190,1191,1193,1195,1198],{"class":228,"line":418},[226,1192,379],{"class":306},[226,1194,654],{"class":382},[226,1196,1197],{"class":232}," UserController",[226,1199,408],{"class":310},[226,1201,1202,1204,1206],{"class":228,"line":444},[226,1203,664],{"class":310},[226,1205,667],{"class":386},[226,1207,670],{"class":314},[226,1209,1210,1212,1214,1216,1218],{"class":228,"line":450},[226,1211,675],{"class":382},[226,1213,678],{"class":430},[226,1215,681],{"class":310},[226,1217,343],{"class":232},[226,1219,333],{"class":310},[226,1221,1222],{"class":228,"line":456},[226,1223,447],{"class":314},[226,1225,1226,1228,1230],{"class":228,"line":482},[226,1227,664],{"class":310},[226,1229,667],{"class":386},[226,1231,1232],{"class":314},"(UserService)\n",[226,1234,1235,1237,1240,1242,1244],{"class":228,"line":500},[226,1236,675],{"class":382},[226,1238,1239],{"class":430}," userService",[226,1241,681],{"class":310},[226,1243,657],{"class":232},[226,1245,333],{"class":310},[226,1247,1248],{"class":228,"line":511},[226,1249,447],{"class":314},[226,1251,1252,1254,1257,1259,1261,1264,1266],{"class":228,"line":517},[226,1253,664],{"class":310},[226,1255,1256],{"class":386},"Post",[226,1258,390],{"class":314},[226,1260,330],{"class":310},[226,1262,1263],{"class":236},"\u002F",[226,1265,330],{"class":310},[226,1267,1188],{"class":314},[226,1269,1270,1272,1275,1277,1280,1282,1285,1287],{"class":228,"line":534},[226,1271,694],{"class":382},[226,1273,1274],{"class":430}," create",[226,1276,390],{"class":310},[226,1278,1279],{"class":393},"req",[226,1281,397],{"class":310},[226,1283,1284],{"class":232}," Request",[226,1286,439],{"class":310},[226,1288,408],{"class":310},[226,1290,1291,1293,1295,1297,1299,1301,1303,1306,1308,1310],{"class":228,"line":546},[226,1292,716],{"class":310},[226,1294,719],{"class":314},[226,1296,424],{"class":310},[226,1298,492],{"class":386},[226,1300,390],{"class":430},[226,1302,330],{"class":310},[226,1304,1305],{"class":236},"POST \u002Fusers - Creating new user",[226,1307,330],{"class":310},[226,1309,439],{"class":430},[226,1311,333],{"class":310},[226,1313,1314],{"class":228,"line":564},[226,1315,746],{"class":430},[226,1317,1318,1320,1322,1324,1326,1329,1331,1334,1337],{"class":228,"line":570},[226,1319,966],{"class":382},[226,1321,737],{"class":314},[226,1323,764],{"class":310},[226,1325,767],{"class":306},[226,1327,1328],{"class":314}," req",[226,1330,424],{"class":310},[226,1332,1333],{"class":386},"json",[226,1335,1336],{"class":430},"()",[226,1338,333],{"class":310},[226,1340,1341,1343,1345,1347,1349,1351,1354,1356,1358,1360,1362,1364],{"class":228,"line":576},[226,1342,966],{"class":382},[226,1344,761],{"class":314},[226,1346,764],{"class":310},[226,1348,767],{"class":306},[226,1350,770],{"class":310},[226,1352,1353],{"class":314},"userService",[226,1355,424],{"class":310},[226,1357,778],{"class":386},[226,1359,390],{"class":430},[226,1361,702],{"class":314},[226,1363,439],{"class":430},[226,1365,333],{"class":310},[226,1367,1368],{"class":228,"line":586},[226,1369,746],{"class":430},[226,1371,1372,1374,1377,1379,1381,1383,1385,1387],{"class":228,"line":906},[226,1373,1065],{"class":306},[226,1375,1376],{"class":314}," Response",[226,1378,424],{"class":310},[226,1380,1333],{"class":386},[226,1382,390],{"class":430},[226,1384,1008],{"class":314},[226,1386,439],{"class":430},[226,1388,333],{"class":310},[226,1390,1391],{"class":228,"line":911},[226,1392,903],{"class":310},[226,1394,1395],{"class":228,"line":932},[226,1396,447],{"class":314},[226,1398,1399,1401,1404,1406,1408,1411,1413],{"class":228,"line":963},[226,1400,664],{"class":310},[226,1402,1403],{"class":386},"Get",[226,1405,390],{"class":314},[226,1407,330],{"class":310},[226,1409,1410],{"class":236},"\u002F:id",[226,1412,330],{"class":310},[226,1414,1188],{"class":314},[226,1416,1417,1419,1422,1424,1426,1428,1430,1432,1435,1437,1439,1442,1444,1446,1449],{"class":228,"line":992},[226,1418,694],{"class":382},[226,1420,1421],{"class":430}," findOne",[226,1423,390],{"class":310},[226,1425,1279],{"class":393},[226,1427,397],{"class":310},[226,1429,1284],{"class":232},[226,1431,346],{"class":310},[226,1433,1434],{"class":393}," params",[226,1436,397],{"class":310},[226,1438,311],{"class":310},[226,1440,1441],{"class":430}," id",[226,1443,397],{"class":310},[226,1445,925],{"class":232},[226,1447,1448],{"class":310}," })",[226,1450,408],{"class":310},[226,1452,1453,1455,1457,1459,1461,1463,1465,1468,1470,1473,1475,1477,1479,1481],{"class":228,"line":997},[226,1454,716],{"class":310},[226,1456,719],{"class":314},[226,1458,424],{"class":310},[226,1460,556],{"class":386},[226,1462,390],{"class":430},[226,1464,945],{"class":310},[226,1466,1467],{"class":236},"GET \u002Fusers\u002F",[226,1469,951],{"class":310},[226,1471,1472],{"class":314},"params",[226,1474,424],{"class":310},[226,1476,822],{"class":314},[226,1478,956],{"class":310},[226,1480,439],{"class":430},[226,1482,333],{"class":310},[226,1484,1485],{"class":228,"line":1015},[226,1486,746],{"class":430},[226,1488,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515],{"class":228,"line":1044},[226,1490,966],{"class":382},[226,1492,761],{"class":314},[226,1494,764],{"class":310},[226,1496,767],{"class":306},[226,1498,770],{"class":310},[226,1500,1353],{"class":314},[226,1502,424],{"class":310},[226,1504,981],{"class":386},[226,1506,390],{"class":430},[226,1508,1472],{"class":314},[226,1510,424],{"class":310},[226,1512,822],{"class":314},[226,1514,439],{"class":430},[226,1516,333],{"class":310},[226,1518,1519],{"class":228,"line":1052},[226,1520,746],{"class":430},[226,1522,1523,1525,1527,1529,1531,1533],{"class":228,"line":1057},[226,1524,1000],{"class":306},[226,1526,848],{"class":430},[226,1528,1005],{"class":310},[226,1530,1008],{"class":314},[226,1532,854],{"class":430},[226,1534,479],{"class":310},[226,1536,1537,1539,1542,1544,1546,1548,1551,1553,1555,1557,1560,1562,1566,1568,1570],{"class":228,"line":1062},[226,1538,833],{"class":306},[226,1540,1541],{"class":310}," new",[226,1543,1376],{"class":386},[226,1545,390],{"class":430},[226,1547,330],{"class":310},[226,1549,1550],{"class":236},"Not found",[226,1552,330],{"class":310},[226,1554,346],{"class":310},[226,1556,311],{"class":310},[226,1558,1559],{"class":430}," status",[226,1561,397],{"class":310},[226,1563,1565],{"class":1564},"sbssI"," 404",[226,1567,318],{"class":310},[226,1569,439],{"class":430},[226,1571,333],{"class":310},[226,1573,1574],{"class":228,"line":1072},[226,1575,898],{"class":310},[226,1577,1578],{"class":228,"line":1077},[226,1579,746],{"class":430},[226,1581,1583,1585,1587,1589,1591,1593,1595,1597],{"class":228,"line":1582},33,[226,1584,1065],{"class":306},[226,1586,1376],{"class":314},[226,1588,424],{"class":310},[226,1590,1333],{"class":386},[226,1592,390],{"class":430},[226,1594,1008],{"class":314},[226,1596,439],{"class":430},[226,1598,333],{"class":310},[226,1600,1602],{"class":228,"line":1601},34,[226,1603,903],{"class":310},[226,1605,1607],{"class":228,"line":1606},35,[226,1608,589],{"class":310},[208,1610,1612],{"id":1611},"core-concepts","Core Concepts",[287,1614,78],{"id":719},[204,1616,1617],{},"The Logger is the main interface for logging messages throughout your application. It provides four logging methods corresponding to different severity levels:",[1619,1620,1621,1629,1635,1641],"ul",{},[1622,1623,1624,1628],"li",{},[1625,1626,1627],"strong",{},"debug()"," - Detailed information useful for debugging",[1622,1630,1631,1634],{},[1625,1632,1633],{},"info()"," - General operational information",[1622,1636,1637,1640],{},[1625,1638,1639],{},"warn()"," - Warnings about potentially harmful situations",[1622,1642,1643,1646],{},[1625,1644,1645],{},"error()"," - Error messages for serious problems",[287,1648,1650],{"id":1649},"providers","Providers",[204,1652,1653],{},"Providers (also called drivers) are responsible for processing and outputting log messages. Each provider can output logs to a different destination (console, file, external service, etc.) with its own formatting and configuration.",[287,1655,1657],{"id":1656},"log-levels","Log Levels",[204,1659,1660],{},"Vercube supports four hierarchical log levels:",[215,1662,1667],{"className":1663,"code":1665,"language":1666},[1664],"language-text","debug (1) → info (2) → warn (3) → error (4)\n","text",[223,1668,1665],{"__ignoreMap":221},[204,1670,1671],{},"When you set a log level, only messages at that level or higher are processed:",[1619,1673,1674,1680,1685,1690],{},[1622,1675,1676,1677,1679],{},"Set to ",[223,1678,556],{}," - All messages are logged",[1622,1681,1676,1682,1684],{},[223,1683,492],{}," - Info, warn, and error are logged",[1622,1686,1676,1687,1689],{},[223,1688,1024],{}," - Only warn and error are logged",[1622,1691,1676,1692,1694],{},[223,1693,851],{}," - Only error messages are logged",[287,1696,1698],{"id":1697},"ioc-container-integration","IOC Container Integration",[204,1700,1701,1702,1705],{},"The Logger integrates seamlessly with Vercube's dependency injection system. You register it in the IOC container and inject it wherever needed using the ",[223,1703,1704],{},"@Inject"," decorator.",[208,1707,33],{"id":1708},"configuration",[287,1710,1712],{"id":1711},"basic-configuration","Basic Configuration",[204,1714,1715],{},"Configure the logger when setting up your application:",[215,1717,1719],{"className":296,"code":1718,"language":299,"meta":221,"style":221},"container.get(Logger).configure({\n  \u002F\u002F Global log level - applies to all providers unless overridden\n  logLevel: 'info',\n  \n  \u002F\u002F List of providers to use\n  providers: [\n    {\n      name: 'console',\n      provider: ConsoleProvider,\n      \u002F\u002F Optional: Override global log level for this provider\n      logLevel: 'debug'\n    }\n  ]\n});\n",[223,1720,1721,1740,1745,1760,1764,1769,1778,1783,1798,1809,1814,1828,1832,1837],{"__ignoreMap":221},[226,1722,1723,1725,1727,1729,1732,1734,1736,1738],{"class":228,"line":229},[226,1724,394],{"class":314},[226,1726,424],{"class":310},[226,1728,463],{"class":386},[226,1730,1731],{"class":314},"(Logger)",[226,1733,424],{"class":310},[226,1735,474],{"class":386},[226,1737,390],{"class":314},[226,1739,479],{"class":310},[226,1741,1742],{"class":228,"line":336},[226,1743,1744],{"class":414},"  \u002F\u002F Global log level - applies to all providers unless overridden\n",[226,1746,1747,1750,1752,1754,1756,1758],{"class":228,"line":370},[226,1748,1749],{"class":430},"  logLevel",[226,1751,397],{"class":310},[226,1753,324],{"class":310},[226,1755,492],{"class":236},[226,1757,330],{"class":310},[226,1759,497],{"class":310},[226,1761,1762],{"class":228,"line":376},[226,1763,447],{"class":314},[226,1765,1766],{"class":228,"line":411},[226,1767,1768],{"class":414},"  \u002F\u002F List of providers to use\n",[226,1770,1771,1774,1776],{"class":228,"line":418},[226,1772,1773],{"class":430},"  providers",[226,1775,397],{"class":310},[226,1777,508],{"class":314},[226,1779,1780],{"class":228,"line":444},[226,1781,1782],{"class":310},"    {\n",[226,1784,1785,1788,1790,1792,1794,1796],{"class":228,"line":450},[226,1786,1787],{"class":430},"      name",[226,1789,397],{"class":310},[226,1791,324],{"class":310},[226,1793,527],{"class":236},[226,1795,330],{"class":310},[226,1797,497],{"class":310},[226,1799,1800,1803,1805,1807],{"class":228,"line":456},[226,1801,1802],{"class":430},"      provider",[226,1804,397],{"class":310},[226,1806,354],{"class":314},[226,1808,497],{"class":310},[226,1810,1811],{"class":228,"line":482},[226,1812,1813],{"class":414},"      \u002F\u002F Optional: Override global log level for this provider\n",[226,1815,1816,1819,1821,1823,1825],{"class":228,"line":500},[226,1817,1818],{"class":430},"      logLevel",[226,1820,397],{"class":310},[226,1822,324],{"class":310},[226,1824,556],{"class":236},[226,1826,1827],{"class":310},"'\n",[226,1829,1830],{"class":228,"line":511},[226,1831,898],{"class":310},[226,1833,1834],{"class":228,"line":517},[226,1835,1836],{"class":314},"  ]\n",[226,1838,1839,1842,1844],{"class":228,"line":534},[226,1840,1841],{"class":310},"}",[226,1843,439],{"class":314},[226,1845,333],{"class":310},[287,1847,1849],{"id":1848},"multiple-providers","Multiple Providers",[204,1851,1852],{},"You can use multiple providers simultaneously to output logs to different destinations:",[215,1854,1856],{"className":296,"code":1855,"language":299,"meta":221,"style":221},"import { ConsoleProvider, JSONProvider } from '@vercube\u002Flogger';\n\ncontainer.get(Logger).configure({\n  logLevel: 'info',\n  providers: [\n    \u002F\u002F Console output for development\n    {\n      name: 'console',\n      provider: ConsoleProvider,\n      logLevel: 'debug'  \u002F\u002F Show everything in console\n    },\n    \u002F\u002F JSON output for log aggregation\n    {\n      name: 'json',\n      provider: JSONProvider,\n      logLevel: 'warn'  \u002F\u002F Only log warnings and errors to JSON\n    }\n  ]\n});\n",[223,1857,1858,1883,1887,1905,1919,1927,1932,1936,1950,1960,1975,1980,1985,1989,2003,2013,2028,2032,2036],{"__ignoreMap":221},[226,1859,1860,1862,1864,1866,1868,1871,1873,1875,1877,1879,1881],{"class":228,"line":229},[226,1861,307],{"class":306},[226,1863,311],{"class":310},[226,1865,354],{"class":314},[226,1867,346],{"class":310},[226,1869,1870],{"class":314}," JSONProvider",[226,1872,318],{"class":310},[226,1874,321],{"class":306},[226,1876,324],{"class":310},[226,1878,363],{"class":236},[226,1880,330],{"class":310},[226,1882,333],{"class":310},[226,1884,1885],{"class":228,"line":336},[226,1886,373],{"emptyLinePlaceholder":56},[226,1888,1889,1891,1893,1895,1897,1899,1901,1903],{"class":228,"line":370},[226,1890,394],{"class":314},[226,1892,424],{"class":310},[226,1894,463],{"class":386},[226,1896,1731],{"class":314},[226,1898,424],{"class":310},[226,1900,474],{"class":386},[226,1902,390],{"class":314},[226,1904,479],{"class":310},[226,1906,1907,1909,1911,1913,1915,1917],{"class":228,"line":376},[226,1908,1749],{"class":430},[226,1910,397],{"class":310},[226,1912,324],{"class":310},[226,1914,492],{"class":236},[226,1916,330],{"class":310},[226,1918,497],{"class":310},[226,1920,1921,1923,1925],{"class":228,"line":411},[226,1922,1773],{"class":430},[226,1924,397],{"class":310},[226,1926,508],{"class":314},[226,1928,1929],{"class":228,"line":418},[226,1930,1931],{"class":414},"    \u002F\u002F Console output for development\n",[226,1933,1934],{"class":228,"line":444},[226,1935,1782],{"class":310},[226,1937,1938,1940,1942,1944,1946,1948],{"class":228,"line":450},[226,1939,1787],{"class":430},[226,1941,397],{"class":310},[226,1943,324],{"class":310},[226,1945,527],{"class":236},[226,1947,330],{"class":310},[226,1949,497],{"class":310},[226,1951,1952,1954,1956,1958],{"class":228,"line":456},[226,1953,1802],{"class":430},[226,1955,397],{"class":310},[226,1957,354],{"class":314},[226,1959,497],{"class":310},[226,1961,1962,1964,1966,1968,1970,1972],{"class":228,"line":482},[226,1963,1818],{"class":430},[226,1965,397],{"class":310},[226,1967,324],{"class":310},[226,1969,556],{"class":236},[226,1971,330],{"class":310},[226,1973,1974],{"class":414},"  \u002F\u002F Show everything in console\n",[226,1976,1977],{"class":228,"line":500},[226,1978,1979],{"class":310},"    },\n",[226,1981,1982],{"class":228,"line":511},[226,1983,1984],{"class":414},"    \u002F\u002F JSON output for log aggregation\n",[226,1986,1987],{"class":228,"line":517},[226,1988,1782],{"class":310},[226,1990,1991,1993,1995,1997,1999,2001],{"class":228,"line":534},[226,1992,1787],{"class":430},[226,1994,397],{"class":310},[226,1996,324],{"class":310},[226,1998,1333],{"class":236},[226,2000,330],{"class":310},[226,2002,497],{"class":310},[226,2004,2005,2007,2009,2011],{"class":228,"line":546},[226,2006,1802],{"class":430},[226,2008,397],{"class":310},[226,2010,1870],{"class":314},[226,2012,497],{"class":310},[226,2014,2015,2017,2019,2021,2023,2025],{"class":228,"line":564},[226,2016,1818],{"class":430},[226,2018,397],{"class":310},[226,2020,324],{"class":310},[226,2022,1024],{"class":236},[226,2024,330],{"class":310},[226,2026,2027],{"class":414},"  \u002F\u002F Only log warnings and errors to JSON\n",[226,2029,2030],{"class":228,"line":570},[226,2031,898],{"class":310},[226,2033,2034],{"class":228,"line":576},[226,2035,1836],{"class":314},[226,2037,2038,2040,2042],{"class":228,"line":586},[226,2039,1841],{"class":310},[226,2041,439],{"class":314},[226,2043,333],{"class":310},[287,2045,2047],{"id":2046},"environment-specific-configuration","Environment-Specific Configuration",[204,2049,2050],{},"Configure different logging behavior for different environments:",[215,2052,2054],{"className":296,"code":2053,"language":299,"meta":221,"style":221},"const isDevelopment = process.env.NODE_ENV === 'development';\nconst isProduction = process.env.NODE_ENV === 'production';\n\ncontainer.get(Logger).configure({\n  logLevel: isDevelopment ? 'debug' : 'info',\n  providers: isDevelopment\n    ? [\n        \u002F\u002F Development: colorful console output\n        {\n          name: 'console',\n          provider: ConsoleProvider,\n          logLevel: 'debug'\n        }\n      ]\n    : [\n        \u002F\u002F Production: structured JSON for log aggregation\n        {\n          name: 'json',\n          provider: JSONProvider,\n          logLevel: 'info'\n        }\n      ]\n});\n",[223,2055,2056,2092,2122,2126,2144,2172,2181,2188,2193,2198,2213,2224,2237,2242,2247,2254,2259,2263,2277,2287,2299,2303,2307],{"__ignoreMap":221},[226,2057,2058,2061,2064,2067,2070,2072,2075,2077,2080,2083,2085,2088,2090],{"class":228,"line":229},[226,2059,2060],{"class":382},"const",[226,2062,2063],{"class":314}," isDevelopment ",[226,2065,2066],{"class":310},"=",[226,2068,2069],{"class":314}," process",[226,2071,424],{"class":310},[226,2073,2074],{"class":314},"env",[226,2076,424],{"class":310},[226,2078,2079],{"class":314},"NODE_ENV ",[226,2081,2082],{"class":310},"===",[226,2084,324],{"class":310},[226,2086,2087],{"class":236},"development",[226,2089,330],{"class":310},[226,2091,333],{"class":310},[226,2093,2094,2096,2099,2101,2103,2105,2107,2109,2111,2113,2115,2118,2120],{"class":228,"line":336},[226,2095,2060],{"class":382},[226,2097,2098],{"class":314}," isProduction ",[226,2100,2066],{"class":310},[226,2102,2069],{"class":314},[226,2104,424],{"class":310},[226,2106,2074],{"class":314},[226,2108,424],{"class":310},[226,2110,2079],{"class":314},[226,2112,2082],{"class":310},[226,2114,324],{"class":310},[226,2116,2117],{"class":236},"production",[226,2119,330],{"class":310},[226,2121,333],{"class":310},[226,2123,2124],{"class":228,"line":370},[226,2125,373],{"emptyLinePlaceholder":56},[226,2127,2128,2130,2132,2134,2136,2138,2140,2142],{"class":228,"line":376},[226,2129,394],{"class":314},[226,2131,424],{"class":310},[226,2133,463],{"class":386},[226,2135,1731],{"class":314},[226,2137,424],{"class":310},[226,2139,474],{"class":386},[226,2141,390],{"class":314},[226,2143,479],{"class":310},[226,2145,2146,2148,2150,2152,2155,2157,2159,2161,2164,2166,2168,2170],{"class":228,"line":411},[226,2147,1749],{"class":430},[226,2149,397],{"class":310},[226,2151,2063],{"class":314},[226,2153,2154],{"class":310},"?",[226,2156,324],{"class":310},[226,2158,556],{"class":236},[226,2160,330],{"class":310},[226,2162,2163],{"class":310}," :",[226,2165,324],{"class":310},[226,2167,492],{"class":236},[226,2169,330],{"class":310},[226,2171,497],{"class":310},[226,2173,2174,2176,2178],{"class":228,"line":418},[226,2175,1773],{"class":430},[226,2177,397],{"class":310},[226,2179,2180],{"class":314}," isDevelopment\n",[226,2182,2183,2186],{"class":228,"line":444},[226,2184,2185],{"class":310},"    ?",[226,2187,508],{"class":314},[226,2189,2190],{"class":228,"line":450},[226,2191,2192],{"class":414},"        \u002F\u002F Development: colorful console output\n",[226,2194,2195],{"class":228,"line":456},[226,2196,2197],{"class":310},"        {\n",[226,2199,2200,2203,2205,2207,2209,2211],{"class":228,"line":482},[226,2201,2202],{"class":430},"          name",[226,2204,397],{"class":310},[226,2206,324],{"class":310},[226,2208,527],{"class":236},[226,2210,330],{"class":310},[226,2212,497],{"class":310},[226,2214,2215,2218,2220,2222],{"class":228,"line":500},[226,2216,2217],{"class":430},"          provider",[226,2219,397],{"class":310},[226,2221,354],{"class":314},[226,2223,497],{"class":310},[226,2225,2226,2229,2231,2233,2235],{"class":228,"line":511},[226,2227,2228],{"class":430},"          logLevel",[226,2230,397],{"class":310},[226,2232,324],{"class":310},[226,2234,556],{"class":236},[226,2236,1827],{"class":310},[226,2238,2239],{"class":228,"line":517},[226,2240,2241],{"class":310},"        }\n",[226,2243,2244],{"class":228,"line":534},[226,2245,2246],{"class":314},"      ]\n",[226,2248,2249,2252],{"class":228,"line":546},[226,2250,2251],{"class":310},"    :",[226,2253,508],{"class":314},[226,2255,2256],{"class":228,"line":564},[226,2257,2258],{"class":414},"        \u002F\u002F Production: structured JSON for log aggregation\n",[226,2260,2261],{"class":228,"line":570},[226,2262,2197],{"class":310},[226,2264,2265,2267,2269,2271,2273,2275],{"class":228,"line":576},[226,2266,2202],{"class":430},[226,2268,397],{"class":310},[226,2270,324],{"class":310},[226,2272,1333],{"class":236},[226,2274,330],{"class":310},[226,2276,497],{"class":310},[226,2278,2279,2281,2283,2285],{"class":228,"line":586},[226,2280,2217],{"class":430},[226,2282,397],{"class":310},[226,2284,1870],{"class":314},[226,2286,497],{"class":310},[226,2288,2289,2291,2293,2295,2297],{"class":228,"line":906},[226,2290,2228],{"class":430},[226,2292,397],{"class":310},[226,2294,324],{"class":310},[226,2296,492],{"class":236},[226,2298,1827],{"class":310},[226,2300,2301],{"class":228,"line":911},[226,2302,2241],{"class":310},[226,2304,2305],{"class":228,"line":932},[226,2306,2246],{"class":314},[226,2308,2309,2311,2313],{"class":228,"line":963},[226,2310,1841],{"class":310},[226,2312,439],{"class":314},[226,2314,333],{"class":310},[287,2316,2318],{"id":2317},"per-provider-log-levels","Per-Provider Log Levels",[204,2320,2321],{},"Each provider can have its own log level, independent of the global setting:",[215,2323,2325],{"className":296,"code":2324,"language":299,"meta":221,"style":221},"container.get(Logger).configure({\n  logLevel: 'warn',  \u002F\u002F Global: only warnings and errors\n  providers: [\n    {\n      name: 'console',\n      provider: ConsoleProvider,\n      logLevel: 'debug'  \u002F\u002F Console shows everything\n    },\n    {\n      name: 'file',\n      provider: FileProvider,\n      logLevel: 'error'  \u002F\u002F File only records errors\n    }\n  ]\n});\n",[223,2326,2327,2345,2362,2370,2374,2388,2398,2413,2417,2421,2436,2447,2462,2466,2470],{"__ignoreMap":221},[226,2328,2329,2331,2333,2335,2337,2339,2341,2343],{"class":228,"line":229},[226,2330,394],{"class":314},[226,2332,424],{"class":310},[226,2334,463],{"class":386},[226,2336,1731],{"class":314},[226,2338,424],{"class":310},[226,2340,474],{"class":386},[226,2342,390],{"class":314},[226,2344,479],{"class":310},[226,2346,2347,2349,2351,2353,2355,2357,2359],{"class":228,"line":336},[226,2348,1749],{"class":430},[226,2350,397],{"class":310},[226,2352,324],{"class":310},[226,2354,1024],{"class":236},[226,2356,330],{"class":310},[226,2358,346],{"class":310},[226,2360,2361],{"class":414},"  \u002F\u002F Global: only warnings and errors\n",[226,2363,2364,2366,2368],{"class":228,"line":370},[226,2365,1773],{"class":430},[226,2367,397],{"class":310},[226,2369,508],{"class":314},[226,2371,2372],{"class":228,"line":376},[226,2373,1782],{"class":310},[226,2375,2376,2378,2380,2382,2384,2386],{"class":228,"line":411},[226,2377,1787],{"class":430},[226,2379,397],{"class":310},[226,2381,324],{"class":310},[226,2383,527],{"class":236},[226,2385,330],{"class":310},[226,2387,497],{"class":310},[226,2389,2390,2392,2394,2396],{"class":228,"line":418},[226,2391,1802],{"class":430},[226,2393,397],{"class":310},[226,2395,354],{"class":314},[226,2397,497],{"class":310},[226,2399,2400,2402,2404,2406,2408,2410],{"class":228,"line":444},[226,2401,1818],{"class":430},[226,2403,397],{"class":310},[226,2405,324],{"class":310},[226,2407,556],{"class":236},[226,2409,330],{"class":310},[226,2411,2412],{"class":414},"  \u002F\u002F Console shows everything\n",[226,2414,2415],{"class":228,"line":450},[226,2416,1979],{"class":310},[226,2418,2419],{"class":228,"line":456},[226,2420,1782],{"class":310},[226,2422,2423,2425,2427,2429,2432,2434],{"class":228,"line":482},[226,2424,1787],{"class":430},[226,2426,397],{"class":310},[226,2428,324],{"class":310},[226,2430,2431],{"class":236},"file",[226,2433,330],{"class":310},[226,2435,497],{"class":310},[226,2437,2438,2440,2442,2445],{"class":228,"line":500},[226,2439,1802],{"class":430},[226,2441,397],{"class":310},[226,2443,2444],{"class":314}," FileProvider",[226,2446,497],{"class":310},[226,2448,2449,2451,2453,2455,2457,2459],{"class":228,"line":511},[226,2450,1818],{"class":430},[226,2452,397],{"class":310},[226,2454,324],{"class":310},[226,2456,851],{"class":236},[226,2458,330],{"class":310},[226,2460,2461],{"class":414},"  \u002F\u002F File only records errors\n",[226,2463,2464],{"class":228,"line":517},[226,2465,898],{"class":310},[226,2467,2468],{"class":228,"line":534},[226,2469,1836],{"class":314},[226,2471,2472,2474,2476],{"class":228,"line":546},[226,2473,1841],{"class":310},[226,2475,439],{"class":314},[226,2477,333],{"class":310},[2479,2480,2481],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":221,"searchDepth":229,"depth":336,"links":2483},[2484,2485,2486,2492],{"id":210,"depth":336,"text":18},{"id":281,"depth":336,"text":282},{"id":1611,"depth":336,"text":1612,"children":2487},[2488,2489,2490,2491],{"id":719,"depth":370,"text":78},{"id":1649,"depth":370,"text":1650},{"id":1656,"depth":370,"text":1657},{"id":1697,"depth":370,"text":1698},{"id":1708,"depth":336,"text":33,"children":2493},[2494,2495,2496,2497],{"id":1711,"depth":370,"text":1712},{"id":1848,"depth":370,"text":1849},{"id":2046,"depth":370,"text":2047},{"id":2317,"depth":370,"text":2318},"Flexible and extensible logging system for Vercube applications","md",null,{},{"title":66,"description":2498},"RDUdO5WW2xtQhuGDOgE-cRz1NMMlrYiuxyPeQtpUVb0",[2505,2507],{"title":74,"path":75,"stem":76,"description":2506,"children":-1},"Complete API reference for the Vercube Auth module",{"title":86,"path":87,"stem":88,"description":2508,"children":-1},"Built-in log providers and guide to creating custom drivers",1775552783204]