@salesforce/b2c-cli 2.3.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/bin/dev.js +8 -8
  2. package/bin/run.js +5 -7
  3. package/content/guidance/b2c/b2c-business-manager-extensions/SKILL.md +361 -0
  4. package/content/guidance/b2c/b2c-business-manager-extensions/references/EXTENSIONS-XML.md +458 -0
  5. package/content/guidance/b2c/b2c-controllers/SKILL.md +301 -0
  6. package/content/guidance/b2c/b2c-controllers/references/CLASSIC-PATTERNS.md +335 -0
  7. package/content/guidance/b2c/b2c-controllers/references/SFRA-PATTERNS.md +400 -0
  8. package/content/guidance/b2c/b2c-custom-api-development/SKILL.md +281 -0
  9. package/content/guidance/b2c/b2c-custom-api-development/references/CONTRACT.md +142 -0
  10. package/content/guidance/b2c/b2c-custom-api-development/references/IMPLEMENTATION.md +153 -0
  11. package/content/guidance/b2c/b2c-custom-api-development/references/TESTING.md +118 -0
  12. package/content/guidance/b2c/b2c-custom-caches/SKILL.md +279 -0
  13. package/content/guidance/b2c/b2c-custom-job-steps/SKILL.md +520 -0
  14. package/content/guidance/b2c/b2c-custom-job-steps/references/CHUNK-ORIENTED.md +377 -0
  15. package/content/guidance/b2c/b2c-custom-job-steps/references/JOBS-XML.md +212 -0
  16. package/content/guidance/b2c/b2c-custom-job-steps/references/STEPTYPES-JSON.md +373 -0
  17. package/content/guidance/b2c/b2c-custom-job-steps/references/TASK-ORIENTED.md +344 -0
  18. package/content/guidance/b2c/b2c-custom-objects/SKILL.md +327 -0
  19. package/content/guidance/b2c/b2c-custom-objects/references/OCAPI-SEARCH.md +298 -0
  20. package/content/guidance/b2c/b2c-forms/SKILL.md +242 -0
  21. package/content/guidance/b2c/b2c-forms/references/FORM-XML.md +409 -0
  22. package/content/guidance/b2c/b2c-hooks/SKILL.md +500 -0
  23. package/content/guidance/b2c/b2c-hooks/references/OCAPI-SCAPI-HOOKS.md +403 -0
  24. package/content/guidance/b2c/b2c-hooks/references/ORDER-HOOK-LIFECYCLE.md +169 -0
  25. package/content/guidance/b2c/b2c-hooks/references/SYSTEM-HOOKS.md +433 -0
  26. package/content/guidance/b2c/b2c-isml/SKILL.md +320 -0
  27. package/content/guidance/b2c/b2c-isml/references/EXPRESSIONS.md +366 -0
  28. package/content/guidance/b2c/b2c-isml/references/TAGS.md +443 -0
  29. package/content/guidance/b2c/b2c-localization/SKILL.md +344 -0
  30. package/content/guidance/b2c/b2c-localization/references/PATTERNS.md +407 -0
  31. package/content/guidance/b2c/b2c-logging/SKILL.md +352 -0
  32. package/content/guidance/b2c/b2c-logging/references/LOG-FILES.md +282 -0
  33. package/content/guidance/b2c/b2c-metadata/SKILL.md +406 -0
  34. package/content/guidance/b2c/b2c-metadata/references/SYSTEM-OBJECTS.md +320 -0
  35. package/content/guidance/b2c/b2c-metadata/references/XML-EXAMPLES.md +366 -0
  36. package/content/guidance/b2c/b2c-onboarding/SKILL.md +154 -0
  37. package/content/guidance/b2c/b2c-ordering/SKILL.md +391 -0
  38. package/content/guidance/b2c/b2c-page-designer/SKILL.md +410 -0
  39. package/content/guidance/b2c/b2c-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
  40. package/content/guidance/b2c/b2c-page-designer/references/META-DEFINITIONS.md +340 -0
  41. package/content/guidance/b2c/b2c-querying-data/SKILL.md +289 -0
  42. package/content/guidance/b2c/b2c-querying-data/references/PERFORMANCE-APIS.md +74 -0
  43. package/content/guidance/b2c/b2c-scapi-admin/SKILL.md +53 -0
  44. package/content/guidance/b2c/b2c-scapi-admin/references/CLIENT-EXAMPLES.md +440 -0
  45. package/content/guidance/b2c/b2c-scapi-admin/references/INTEGRATION-PATTERNS.md +518 -0
  46. package/content/guidance/b2c/b2c-scapi-admin/references/OAUTH-SCOPES.md +337 -0
  47. package/content/guidance/b2c/b2c-scapi-shopper/SKILL.md +56 -0
  48. package/content/guidance/b2c/b2c-scapi-shopper/references/CHECKOUT-FLOW.md +466 -0
  49. package/content/guidance/b2c/b2c-scapi-shopper/references/CLIENT-EXAMPLES.md +351 -0
  50. package/content/guidance/b2c/b2c-scapi-shopper/references/COMMON-PATTERNS.md +390 -0
  51. package/content/guidance/b2c/b2c-scapi-shopper/references/SCOPES.md +290 -0
  52. package/content/guidance/b2c/b2c-slas-auth-patterns/SKILL.md +420 -0
  53. package/content/guidance/b2c/b2c-slas-auth-patterns/references/PASSKEYS.md +126 -0
  54. package/content/guidance/b2c/b2c-slas-auth-patterns/references/SESSION-BRIDGE.md +267 -0
  55. package/content/guidance/b2c/b2c-slas-auth-patterns/references/TOKEN-LIFECYCLE.md +367 -0
  56. package/content/guidance/b2c/b2c-webservices/SKILL.md +318 -0
  57. package/content/guidance/b2c/b2c-webservices/references/FTP-SERVICES.md +524 -0
  58. package/content/guidance/b2c/b2c-webservices/references/HTTP-SERVICES.md +578 -0
  59. package/content/guidance/b2c/b2c-webservices/references/SERVICES-XML.md +351 -0
  60. package/content/guidance/b2c/b2c-webservices/references/SOAP-SERVICES.md +587 -0
  61. package/content/guidance/b2c-cli/b2c-am/SKILL.md +277 -0
  62. package/content/guidance/b2c-cli/b2c-bm-users-roles/SKILL.md +210 -0
  63. package/content/guidance/b2c-cli/b2c-cap/SKILL.md +131 -0
  64. package/content/guidance/b2c-cli/b2c-cip/SKILL.md +116 -0
  65. package/content/guidance/b2c-cli/b2c-cip/references/KNOWN_TABLES.md +105 -0
  66. package/content/guidance/b2c-cli/b2c-cip/references/SALES_ANALYSIS.md +50 -0
  67. package/content/guidance/b2c-cli/b2c-cip/references/STARTER_QUERIES.md +147 -0
  68. package/content/guidance/b2c-cli/b2c-code/SKILL.md +146 -0
  69. package/content/guidance/b2c-cli/b2c-config/SKILL.md +481 -0
  70. package/content/guidance/b2c-cli/b2c-content/SKILL.md +176 -0
  71. package/content/guidance/b2c-cli/b2c-debug/SKILL.md +138 -0
  72. package/content/guidance/b2c-cli/b2c-docs/SKILL.md +301 -0
  73. package/content/guidance/b2c-cli/b2c-ecdn/SKILL.md +137 -0
  74. package/content/guidance/b2c-cli/b2c-ecdn/references/ADVANCED.md +97 -0
  75. package/content/guidance/b2c-cli/b2c-ecdn/references/SECURITY.md +75 -0
  76. package/content/guidance/b2c-cli/b2c-import-set-migrations/SKILL.md +265 -0
  77. package/content/guidance/b2c-cli/b2c-job/SKILL.md +70 -0
  78. package/content/guidance/b2c-cli/b2c-job/references/EXPORT.md +121 -0
  79. package/content/guidance/b2c-cli/b2c-job/references/IMPORT.md +55 -0
  80. package/content/guidance/b2c-cli/b2c-job/references/RUN-AND-MONITOR.md +148 -0
  81. package/content/guidance/b2c-cli/b2c-logs/SKILL.md +249 -0
  82. package/content/guidance/b2c-cli/b2c-metrics/SKILL.md +315 -0
  83. package/content/guidance/b2c-cli/b2c-mrt/SKILL.md +207 -0
  84. package/content/guidance/b2c-cli/b2c-mrt/references/BUNDLE-COMMANDS.md +203 -0
  85. package/content/guidance/b2c-cli/b2c-mrt/references/ENVIRONMENT-COMMANDS.md +218 -0
  86. package/content/guidance/b2c-cli/b2c-mrt/references/PROJECT-COMMANDS.md +154 -0
  87. package/content/guidance/b2c-cli/b2c-sandbox/SKILL.md +112 -0
  88. package/content/guidance/b2c-cli/b2c-scapi-custom/SKILL.md +126 -0
  89. package/content/guidance/b2c-cli/b2c-scapi-schemas/SKILL.md +70 -0
  90. package/content/guidance/b2c-cli/b2c-scapi-schemas/references/CLI-EXAMPLES.md +108 -0
  91. package/content/guidance/b2c-cli/b2c-site-import-export/SKILL.md +57 -0
  92. package/content/guidance/b2c-cli/b2c-site-import-export/references/IMPORT-OPTIONS.md +118 -0
  93. package/content/guidance/b2c-cli/b2c-site-import-export/references/METADATA-XML.md +381 -0
  94. package/content/guidance/b2c-cli/b2c-site-import-export/references/WORKFLOWS.md +182 -0
  95. package/content/guidance/b2c-cli/b2c-sites/SKILL.md +112 -0
  96. package/content/guidance/b2c-cli/b2c-slas/SKILL.md +182 -0
  97. package/content/guidance/b2c-cli/b2c-webdav/SKILL.md +186 -0
  98. package/content/guidance/b2c-ops/b2c-checkout-triage/SKILL.md +68 -0
  99. package/content/guidance/b2c-ops/b2c-edge-traffic-triage/SKILL.md +69 -0
  100. package/content/guidance/b2c-ops/b2c-job-health/SKILL.md +80 -0
  101. package/content/guidance/b2c-ops/b2c-job-health/references/job-logs.md +21 -0
  102. package/content/guidance/b2c-ops/b2c-order-failure-triage/SKILL.md +66 -0
  103. package/content/guidance/b2c-ops/b2c-order-failure-triage/references/order-evidence.md +87 -0
  104. package/content/guidance/b2c-ops/b2c-production-triage/SKILL.md +88 -0
  105. package/content/guidance/b2c-ops/b2c-production-triage/references/escalation.md +57 -0
  106. package/content/guidance/index.json +1969 -0
  107. package/content/guidance/storefront-next/sfnext-accessibility/SKILL.md +103 -0
  108. package/content/guidance/storefront-next/sfnext-accessibility/references/checklist.md +64 -0
  109. package/content/guidance/storefront-next/sfnext-analytics-consent/SKILL.md +91 -0
  110. package/content/guidance/storefront-next/sfnext-analytics-consent/references/CUSTOM-ADAPTER.md +49 -0
  111. package/content/guidance/storefront-next/sfnext-authentication/SKILL.md +127 -0
  112. package/content/guidance/storefront-next/sfnext-authentication/references/COOKIES.md +39 -0
  113. package/content/guidance/storefront-next/sfnext-authentication/references/LOGIN-FLOWS.md +59 -0
  114. package/content/guidance/storefront-next/sfnext-commerce-features/SKILL.md +67 -0
  115. package/content/guidance/storefront-next/sfnext-commerce-features/references/FEATURE-PREREQUISITES.md +37 -0
  116. package/content/guidance/storefront-next/sfnext-components/SKILL.md +153 -0
  117. package/content/guidance/storefront-next/sfnext-components/references/COMPONENT-AUTHORING.md +118 -0
  118. package/content/guidance/storefront-next/sfnext-components/references/SHAPE-TOKENS.md +51 -0
  119. package/content/guidance/storefront-next/sfnext-components/references/STORYBOOK.md +54 -0
  120. package/content/guidance/storefront-next/sfnext-components/references/TOKEN-SYSTEM.md +53 -0
  121. package/content/guidance/storefront-next/sfnext-components/references/TROUBLESHOOTING.md +19 -0
  122. package/content/guidance/storefront-next/sfnext-configuration/SKILL.md +163 -0
  123. package/content/guidance/storefront-next/sfnext-configuration/references/ENV-VARIABLES.md +55 -0
  124. package/content/guidance/storefront-next/sfnext-configuration/references/MULTI-SITE-URLS.md +137 -0
  125. package/content/guidance/storefront-next/sfnext-data-fetching/SKILL.md +140 -0
  126. package/content/guidance/storefront-next/sfnext-data-fetching/references/ACTIONS.md +53 -0
  127. package/content/guidance/storefront-next/sfnext-data-fetching/references/API-CLIENTS.md +34 -0
  128. package/content/guidance/storefront-next/sfnext-data-fetching/references/LOADERS.md +73 -0
  129. package/content/guidance/storefront-next/sfnext-data-fetching/references/SCAPI-FETCHER.md +39 -0
  130. package/content/guidance/storefront-next/sfnext-deployment/SKILL.md +127 -0
  131. package/content/guidance/storefront-next/sfnext-deployment/references/MRT-DEPLOYMENT.md +59 -0
  132. package/content/guidance/storefront-next/sfnext-extensions/SKILL.md +118 -0
  133. package/content/guidance/storefront-next/sfnext-extensions/references/ACTION-HOOKS.md +57 -0
  134. package/content/guidance/storefront-next/sfnext-extensions/references/BASE-AUDIT.md +68 -0
  135. package/content/guidance/storefront-next/sfnext-extensions/references/CLI-AND-INSTALL.md +58 -0
  136. package/content/guidance/storefront-next/sfnext-extensions/references/EXTENSION-EXAMPLES.md +79 -0
  137. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/SKILL.md +93 -0
  138. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/references/HYBRID-PROXY-CONFIG.md +86 -0
  139. package/content/guidance/storefront-next/sfnext-i18n/SKILL.md +152 -0
  140. package/content/guidance/storefront-next/sfnext-i18n/references/locale-config.md +35 -0
  141. package/content/guidance/storefront-next/sfnext-overview/SKILL.md +101 -0
  142. package/content/guidance/storefront-next/sfnext-page-designer/SKILL.md +202 -0
  143. package/content/guidance/storefront-next/sfnext-page-designer/references/BUSINESS-MANAGER.md +46 -0
  144. package/content/guidance/storefront-next/sfnext-page-designer/references/COMPONENT-REGISTRY.md +111 -0
  145. package/content/guidance/storefront-next/sfnext-page-designer/references/DECORATOR-PATTERNS.md +168 -0
  146. package/content/guidance/storefront-next/sfnext-page-designer/references/REVIEW-CHECKLIST.md +83 -0
  147. package/content/guidance/storefront-next/sfnext-page-designer/references/TROUBLESHOOTING.md +35 -0
  148. package/content/guidance/storefront-next/sfnext-performance/SKILL.md +102 -0
  149. package/content/guidance/storefront-next/sfnext-performance/references/PERFORMANCE-REVIEW-CHECKLIST.md +85 -0
  150. package/content/guidance/storefront-next/sfnext-performance/references/SUSPENSE-AND-STREAMING.md +58 -0
  151. package/content/guidance/storefront-next/sfnext-project-setup/SKILL.md +147 -0
  152. package/content/guidance/storefront-next/sfnext-project-setup/references/PROJECT-STRUCTURE.md +61 -0
  153. package/content/guidance/storefront-next/sfnext-project-setup/references/SCRIPTS.md +47 -0
  154. package/content/guidance/storefront-next/sfnext-project-setup/references/SFNEXT-CLI.md +63 -0
  155. package/content/guidance/storefront-next/sfnext-quality-gates/SKILL.md +70 -0
  156. package/content/guidance/storefront-next/sfnext-quality-gates/references/lint-and-budgets.md +39 -0
  157. package/content/guidance/storefront-next/sfnext-revalidation/SKILL.md +121 -0
  158. package/content/guidance/storefront-next/sfnext-revalidation/references/POLICIES-AND-TAGS.md +55 -0
  159. package/content/guidance/storefront-next/sfnext-routing/SKILL.md +123 -0
  160. package/content/guidance/storefront-next/sfnext-routing/references/ROUTE-CONVENTIONS.md +65 -0
  161. package/content/guidance/storefront-next/sfnext-routing/references/URLS-AND-SEO-ROUTES.md +22 -0
  162. package/content/guidance/storefront-next/sfnext-scapi/SKILL.md +126 -0
  163. package/content/guidance/storefront-next/sfnext-scapi/references/WORKED-EXAMPLE.md +39 -0
  164. package/content/guidance/storefront-next/sfnext-security/SKILL.md +129 -0
  165. package/content/guidance/storefront-next/sfnext-security/references/COOKIE-DOMAIN.md +39 -0
  166. package/content/guidance/storefront-next/sfnext-security/references/TURNSTILE.md +43 -0
  167. package/content/guidance/storefront-next/sfnext-seo/SKILL.md +95 -0
  168. package/content/guidance/storefront-next/sfnext-seo/references/MULTI-DOMAIN-BASE-PATH.md +17 -0
  169. package/content/guidance/storefront-next/sfnext-seo/references/SEO-ROUTES.md +31 -0
  170. package/content/guidance/storefront-next/sfnext-state-management/SKILL.md +114 -0
  171. package/content/guidance/storefront-next/sfnext-state-management/references/PATTERNS.md +45 -0
  172. package/content/guidance/storefront-next/sfnext-testing/SKILL.md +151 -0
  173. package/content/guidance/storefront-next/sfnext-testing/references/E2E.md +38 -0
  174. package/content/guidance/storefront-next/sfnext-testing/references/STORYBOOK-PATTERNS.md +97 -0
  175. package/content/guidance/storefront-next/sfnext-testing/references/UNIT-AND-ROUTE-TESTS.md +60 -0
  176. package/content/guidance/storefront-next/sfnext-theming/SKILL.md +104 -0
  177. package/content/guidance/storefront-next/sfnext-theming/references/REBRAND-CHECKLIST.md +29 -0
  178. package/dist/commands/cap/install.d.ts +1 -0
  179. package/dist/commands/cap/list.d.ts +1 -0
  180. package/dist/commands/cap/pull.d.ts +1 -0
  181. package/dist/commands/cap/tasks.d.ts +1 -0
  182. package/dist/commands/cap/uninstall.d.ts +1 -0
  183. package/dist/commands/cip/describe.d.ts +1 -0
  184. package/dist/commands/cip/query.d.ts +1 -0
  185. package/dist/commands/cip/report/bot-traffic-share.d.ts +1 -0
  186. package/dist/commands/cip/report/checkout-funnel-dropoff.d.ts +1 -0
  187. package/dist/commands/cip/report/controller-error-rate-trend.d.ts +1 -0
  188. package/dist/commands/cip/report/controller-health-scorecard.d.ts +1 -0
  189. package/dist/commands/cip/report/customer-registration-trends.d.ts +1 -0
  190. package/dist/commands/cip/report/discount-depth-breakdown.d.ts +1 -0
  191. package/dist/commands/cip/report/inventory-stockout-by-location.d.ts +1 -0
  192. package/dist/commands/cip/report/new-vs-returning-buyer-revenue.d.ts +1 -0
  193. package/dist/commands/cip/report/ocapi-client-usage.d.ts +1 -0
  194. package/dist/commands/cip/report/ocapi-requests.d.ts +1 -0
  195. package/dist/commands/cip/report/payment-method-performance.d.ts +1 -0
  196. package/dist/commands/cip/report/product-co-purchase-analysis.d.ts +1 -0
  197. package/dist/commands/cip/report/promotion-discount-analysis.d.ts +1 -0
  198. package/dist/commands/cip/report/promotion-roi-leaderboard.d.ts +1 -0
  199. package/dist/commands/cip/report/recommender-effectiveness.d.ts +1 -0
  200. package/dist/commands/cip/report/remote-include-performance.d.ts +1 -0
  201. package/dist/commands/cip/report/revenue-by-channel.d.ts +1 -0
  202. package/dist/commands/cip/report/sales-analytics.d.ts +1 -0
  203. package/dist/commands/cip/report/sales-summary.d.ts +1 -0
  204. package/dist/commands/cip/report/scapi-cache-hit-ratio.d.ts +1 -0
  205. package/dist/commands/cip/report/scapi-error-rate-by-status.d.ts +1 -0
  206. package/dist/commands/cip/report/scapi-latency-distribution.d.ts +1 -0
  207. package/dist/commands/cip/report/scapi-traffic-latency.d.ts +1 -0
  208. package/dist/commands/cip/report/search-query-performance.d.ts +1 -0
  209. package/dist/commands/cip/report/top-referrers.d.ts +1 -0
  210. package/dist/commands/cip/report/top-selling-products.d.ts +1 -0
  211. package/dist/commands/cip/report/zero-result-searches.d.ts +1 -0
  212. package/dist/commands/cip/tables.d.ts +1 -0
  213. package/dist/commands/code/activate.d.ts +1 -0
  214. package/dist/commands/code/delete.d.ts +1 -0
  215. package/dist/commands/code/deploy.d.ts +1 -0
  216. package/dist/commands/code/download.d.ts +1 -0
  217. package/dist/commands/code/watch.d.ts +1 -0
  218. package/dist/commands/commands/search.d.ts +35 -0
  219. package/dist/commands/commands/search.js +85 -0
  220. package/dist/commands/commands/search.js.map +1 -0
  221. package/dist/commands/content/export.d.ts +1 -0
  222. package/dist/commands/content/list.d.ts +1 -0
  223. package/dist/commands/content/validate.d.ts +1 -0
  224. package/dist/commands/debug/cli.d.ts +1 -0
  225. package/dist/commands/debug/index.d.ts +1 -0
  226. package/dist/commands/docs/cache.d.ts +1 -0
  227. package/dist/commands/docs/download.d.ts +1 -0
  228. package/dist/commands/docs/read.d.ts +1 -0
  229. package/dist/commands/docs/schema.d.ts +1 -0
  230. package/dist/commands/docs/search.d.ts +1 -0
  231. package/dist/commands/docs/skill.d.ts +41 -0
  232. package/dist/commands/docs/skill.js +183 -0
  233. package/dist/commands/docs/skill.js.map +1 -0
  234. package/dist/commands/ecdn/cache/purge.d.ts +1 -0
  235. package/dist/commands/ecdn/certificates/add.d.ts +1 -0
  236. package/dist/commands/ecdn/certificates/delete.d.ts +1 -0
  237. package/dist/commands/ecdn/certificates/list.d.ts +1 -0
  238. package/dist/commands/ecdn/certificates/update.d.ts +1 -0
  239. package/dist/commands/ecdn/certificates/validate.d.ts +1 -0
  240. package/dist/commands/ecdn/cipher-suites/get.d.ts +1 -0
  241. package/dist/commands/ecdn/cipher-suites/update.d.ts +1 -0
  242. package/dist/commands/ecdn/firewall/create.d.ts +1 -0
  243. package/dist/commands/ecdn/firewall/delete.d.ts +1 -0
  244. package/dist/commands/ecdn/firewall/get.d.ts +1 -0
  245. package/dist/commands/ecdn/firewall/list.d.ts +1 -0
  246. package/dist/commands/ecdn/firewall/reorder.d.ts +1 -0
  247. package/dist/commands/ecdn/firewall/update.d.ts +1 -0
  248. package/dist/commands/ecdn/logpush/jobs/create.d.ts +1 -0
  249. package/dist/commands/ecdn/logpush/jobs/delete.d.ts +1 -0
  250. package/dist/commands/ecdn/logpush/jobs/get.d.ts +1 -0
  251. package/dist/commands/ecdn/logpush/jobs/list.d.ts +1 -0
  252. package/dist/commands/ecdn/logpush/jobs/update.d.ts +1 -0
  253. package/dist/commands/ecdn/logpush/ownership.d.ts +1 -0
  254. package/dist/commands/ecdn/mrt-rules/create.d.ts +1 -0
  255. package/dist/commands/ecdn/mrt-rules/delete.d.ts +1 -0
  256. package/dist/commands/ecdn/mrt-rules/get.d.ts +1 -0
  257. package/dist/commands/ecdn/mrt-rules/rules/delete.d.ts +1 -0
  258. package/dist/commands/ecdn/mrt-rules/rules/update.d.ts +1 -0
  259. package/dist/commands/ecdn/mrt-rules/update.d.ts +1 -0
  260. package/dist/commands/ecdn/mtls/create.d.ts +1 -0
  261. package/dist/commands/ecdn/mtls/delete.d.ts +1 -0
  262. package/dist/commands/ecdn/mtls/get.d.ts +1 -0
  263. package/dist/commands/ecdn/mtls/issue.d.ts +1 -0
  264. package/dist/commands/ecdn/mtls/list.d.ts +1 -0
  265. package/dist/commands/ecdn/mtls/setup.d.ts +1 -0
  266. package/dist/commands/ecdn/origin-headers/delete.d.ts +1 -0
  267. package/dist/commands/ecdn/origin-headers/get.d.ts +1 -0
  268. package/dist/commands/ecdn/origin-headers/set.d.ts +1 -0
  269. package/dist/commands/ecdn/page-shield/notifications/create.d.ts +1 -0
  270. package/dist/commands/ecdn/page-shield/notifications/delete.d.ts +1 -0
  271. package/dist/commands/ecdn/page-shield/notifications/list.d.ts +1 -0
  272. package/dist/commands/ecdn/page-shield/policies/create.d.ts +1 -0
  273. package/dist/commands/ecdn/page-shield/policies/delete.d.ts +1 -0
  274. package/dist/commands/ecdn/page-shield/policies/get.d.ts +1 -0
  275. package/dist/commands/ecdn/page-shield/policies/list.d.ts +1 -0
  276. package/dist/commands/ecdn/page-shield/policies/update.d.ts +1 -0
  277. package/dist/commands/ecdn/page-shield/scripts/get.d.ts +1 -0
  278. package/dist/commands/ecdn/page-shield/scripts/list.d.ts +1 -0
  279. package/dist/commands/ecdn/rate-limit/create.d.ts +1 -0
  280. package/dist/commands/ecdn/rate-limit/delete.d.ts +1 -0
  281. package/dist/commands/ecdn/rate-limit/get.d.ts +1 -0
  282. package/dist/commands/ecdn/rate-limit/list.d.ts +1 -0
  283. package/dist/commands/ecdn/rate-limit/update.d.ts +1 -0
  284. package/dist/commands/ecdn/security/get.d.ts +1 -0
  285. package/dist/commands/ecdn/security/update.d.ts +1 -0
  286. package/dist/commands/ecdn/speed/get.d.ts +1 -0
  287. package/dist/commands/ecdn/speed/update.d.ts +1 -0
  288. package/dist/commands/ecdn/waf/groups/list.d.ts +1 -0
  289. package/dist/commands/ecdn/waf/groups/update.d.ts +1 -0
  290. package/dist/commands/ecdn/waf/managed-rules/list.d.ts +1 -0
  291. package/dist/commands/ecdn/waf/managed-rules/update.d.ts +1 -0
  292. package/dist/commands/ecdn/waf/migrate.d.ts +1 -0
  293. package/dist/commands/ecdn/waf/owasp/get.d.ts +1 -0
  294. package/dist/commands/ecdn/waf/owasp/update.d.ts +1 -0
  295. package/dist/commands/ecdn/waf/rules/get.d.ts +1 -0
  296. package/dist/commands/ecdn/waf/rules/list.d.ts +1 -0
  297. package/dist/commands/ecdn/waf/rules/update.d.ts +1 -0
  298. package/dist/commands/ecdn/waf/rulesets/list.d.ts +1 -0
  299. package/dist/commands/ecdn/waf/rulesets/update.d.ts +1 -0
  300. package/dist/commands/ecdn/zones/create.d.ts +1 -0
  301. package/dist/commands/ecdn/zones/list.d.ts +1 -0
  302. package/dist/commands/job/execution/delete.d.ts +1 -0
  303. package/dist/commands/job/export.d.ts +1 -0
  304. package/dist/commands/job/import-set.d.ts +1 -0
  305. package/dist/commands/job/import.d.ts +1 -0
  306. package/dist/commands/job/log.d.ts +1 -0
  307. package/dist/commands/job/run.d.ts +1 -0
  308. package/dist/commands/job/run.js +1 -1
  309. package/dist/commands/job/run.js.map +1 -1
  310. package/dist/commands/job/search.d.ts +1 -0
  311. package/dist/commands/job/wait.d.ts +1 -0
  312. package/dist/commands/logs/get.d.ts +1 -0
  313. package/dist/commands/logs/list.d.ts +1 -0
  314. package/dist/commands/logs/tail.d.ts +1 -0
  315. package/dist/commands/metrics/controller.d.ts +1 -0
  316. package/dist/commands/metrics/ecdn.d.ts +1 -0
  317. package/dist/commands/metrics/mrt.d.ts +1 -0
  318. package/dist/commands/metrics/ocapi.d.ts +1 -0
  319. package/dist/commands/metrics/overall.d.ts +1 -0
  320. package/dist/commands/metrics/sales.d.ts +1 -0
  321. package/dist/commands/metrics/scapi-hooks.d.ts +1 -0
  322. package/dist/commands/metrics/scapi.d.ts +1 -0
  323. package/dist/commands/metrics/third-party.d.ts +1 -0
  324. package/dist/commands/mrt/bundle/delete.d.ts +1 -0
  325. package/dist/commands/mrt/bundle/deploy.d.ts +1 -0
  326. package/dist/commands/mrt/bundle/download.d.ts +1 -0
  327. package/dist/commands/mrt/bundle/history.d.ts +1 -0
  328. package/dist/commands/mrt/bundle/list.d.ts +1 -0
  329. package/dist/commands/mrt/bundle/save.d.ts +1 -0
  330. package/dist/commands/mrt/bundle/upload-v2.d.ts +1 -0
  331. package/dist/commands/mrt/env/access-control/list.d.ts +1 -0
  332. package/dist/commands/mrt/env/b2c.d.ts +1 -0
  333. package/dist/commands/mrt/env/clone.d.ts +1 -0
  334. package/dist/commands/mrt/env/create.d.ts +1 -0
  335. package/dist/commands/mrt/env/delete.d.ts +1 -0
  336. package/dist/commands/mrt/env/get.d.ts +1 -0
  337. package/dist/commands/mrt/env/invalidate.d.ts +1 -0
  338. package/dist/commands/mrt/env/list.d.ts +1 -0
  339. package/dist/commands/mrt/env/redirect/clone.d.ts +1 -0
  340. package/dist/commands/mrt/env/redirect/create.d.ts +1 -0
  341. package/dist/commands/mrt/env/redirect/delete.d.ts +1 -0
  342. package/dist/commands/mrt/env/redirect/list.d.ts +1 -0
  343. package/dist/commands/mrt/env/update.d.ts +1 -0
  344. package/dist/commands/mrt/env/var/delete.d.ts +1 -0
  345. package/dist/commands/mrt/env/var/list.d.ts +1 -0
  346. package/dist/commands/mrt/env/var/push.d.ts +1 -0
  347. package/dist/commands/mrt/env/var/set.d.ts +1 -0
  348. package/dist/commands/mrt/org/b2c.d.ts +1 -0
  349. package/dist/commands/mrt/org/cert/create.d.ts +1 -0
  350. package/dist/commands/mrt/org/cert/delete.d.ts +1 -0
  351. package/dist/commands/mrt/org/cert/get.d.ts +1 -0
  352. package/dist/commands/mrt/org/cert/list.d.ts +1 -0
  353. package/dist/commands/mrt/org/cert/restart-validation.d.ts +1 -0
  354. package/dist/commands/mrt/org/list.d.ts +1 -0
  355. package/dist/commands/mrt/org/member/add.d.ts +1 -0
  356. package/dist/commands/mrt/org/member/get.d.ts +1 -0
  357. package/dist/commands/mrt/org/member/list.d.ts +1 -0
  358. package/dist/commands/mrt/org/member/remove.d.ts +1 -0
  359. package/dist/commands/mrt/org/member/update.d.ts +1 -0
  360. package/dist/commands/mrt/project/create.d.ts +1 -0
  361. package/dist/commands/mrt/project/delete.d.ts +1 -0
  362. package/dist/commands/mrt/project/get.d.ts +1 -0
  363. package/dist/commands/mrt/project/list.d.ts +1 -0
  364. package/dist/commands/mrt/project/member/add.d.ts +1 -0
  365. package/dist/commands/mrt/project/member/get.d.ts +1 -0
  366. package/dist/commands/mrt/project/member/list.d.ts +1 -0
  367. package/dist/commands/mrt/project/member/remove.d.ts +1 -0
  368. package/dist/commands/mrt/project/member/update.d.ts +1 -0
  369. package/dist/commands/mrt/project/notification/delete.d.ts +1 -0
  370. package/dist/commands/mrt/project/notification/get.d.ts +1 -0
  371. package/dist/commands/mrt/project/update.d.ts +1 -0
  372. package/dist/commands/mrt/save-credentials.d.ts +1 -0
  373. package/dist/commands/mrt/tail-logs.d.ts +1 -0
  374. package/dist/commands/mrt/user/api-key.d.ts +1 -0
  375. package/dist/commands/mrt/user/email-prefs.d.ts +1 -0
  376. package/dist/commands/mrt/user/profile.d.ts +1 -0
  377. package/dist/commands/scaffold/init.js +2 -1
  378. package/dist/commands/scaffold/init.js.map +1 -1
  379. package/dist/commands/scapi/custom/status.d.ts +1 -0
  380. package/dist/commands/scapi/schemas/get.d.ts +9 -0
  381. package/dist/commands/scapi/schemas/get.js +51 -19
  382. package/dist/commands/scapi/schemas/get.js.map +1 -1
  383. package/dist/commands/scapi/schemas/list.d.ts +6 -0
  384. package/dist/commands/scapi/schemas/list.js +28 -18
  385. package/dist/commands/scapi/schemas/list.js.map +1 -1
  386. package/dist/commands/setup/get.d.ts +36 -0
  387. package/dist/commands/setup/get.js +67 -0
  388. package/dist/commands/setup/get.js.map +1 -0
  389. package/dist/commands/setup/ide/tsserver-plugin.d.ts +1 -0
  390. package/dist/commands/setup/ide/vscode-types.d.ts +1 -0
  391. package/dist/commands/setup/index.js +4 -3
  392. package/dist/commands/setup/index.js.map +1 -1
  393. package/dist/commands/setup/inspect.d.ts +1 -0
  394. package/dist/commands/setup/inspect.js +15 -4
  395. package/dist/commands/setup/inspect.js.map +1 -1
  396. package/dist/commands/setup/instance/create.d.ts +9 -0
  397. package/dist/commands/setup/instance/create.js +22 -6
  398. package/dist/commands/setup/instance/create.js.map +1 -1
  399. package/dist/commands/setup/instance/list.d.ts +1 -0
  400. package/dist/commands/setup/instance/list.js +3 -4
  401. package/dist/commands/setup/instance/list.js.map +1 -1
  402. package/dist/commands/setup/instance/remove.d.ts +1 -0
  403. package/dist/commands/setup/instance/remove.js +5 -5
  404. package/dist/commands/setup/instance/remove.js.map +1 -1
  405. package/dist/commands/setup/instance/set-active.d.ts +6 -0
  406. package/dist/commands/setup/instance/set-active.js +20 -5
  407. package/dist/commands/setup/instance/set-active.js.map +1 -1
  408. package/dist/commands/setup/openshell.d.ts +1 -0
  409. package/dist/commands/setup/set.d.ts +37 -0
  410. package/dist/commands/setup/set.js +87 -0
  411. package/dist/commands/setup/set.js.map +1 -0
  412. package/dist/commands/setup/skills.d.ts +1 -0
  413. package/dist/commands/setup/unset.d.ts +37 -0
  414. package/dist/commands/setup/unset.js +55 -0
  415. package/dist/commands/setup/unset.js.map +1 -0
  416. package/dist/commands/slas/client/create.d.ts +1 -0
  417. package/dist/commands/slas/client/delete.d.ts +1 -0
  418. package/dist/commands/slas/client/get.d.ts +1 -0
  419. package/dist/commands/slas/client/list.d.ts +1 -0
  420. package/dist/commands/slas/client/open.d.ts +1 -0
  421. package/dist/commands/slas/client/update.d.ts +1 -0
  422. package/dist/commands/slas/token.d.ts +1 -0
  423. package/dist/commands/slas/token.js +2 -1
  424. package/dist/commands/slas/token.js.map +1 -1
  425. package/dist/commands/webdav/get.d.ts +1 -0
  426. package/dist/commands/webdav/rm.d.ts +1 -0
  427. package/dist/help.d.ts +25 -0
  428. package/dist/help.js +96 -0
  429. package/dist/help.js.map +1 -0
  430. package/dist/lib/scaffold/generate-helper.js +3 -2
  431. package/dist/lib/scaffold/generate-helper.js.map +1 -1
  432. package/dist/lib/skills.d.ts +19 -0
  433. package/dist/lib/skills.js +75 -0
  434. package/dist/lib/skills.js.map +1 -0
  435. package/dist/utils/cip/command.d.ts +1 -0
  436. package/dist/utils/ecdn/zone-command.d.ts +1 -0
  437. package/dist/utils/setup/config-field-command.d.ts +25 -0
  438. package/dist/utils/setup/config-field-command.js +41 -0
  439. package/dist/utils/setup/config-field-command.js.map +1 -0
  440. package/dist/utils/slas/client.d.ts +1 -0
  441. package/oclif.manifest.json +20802 -16968
  442. package/package.json +11 -5
@@ -0,0 +1,352 @@
1
+ ---
2
+ name: b2c-logging
3
+ description: Implement server-side logging with dw.system.Logger, custom log categories, and named log files. Use this skill whenever the user needs to add debug or error logging to Commerce scripts, write to a dedicated log file, configure log categories and levels, or use nested diagnostic context for tracing. Also use when setting up logging in controllers, hooks, or job scripts -- even if they just say 'add logging to my script' or 'write to a custom log file'.
4
+ ---
5
+
6
+ # Logging Skill
7
+
8
+ This skill guides you through implementing logging in B2C Commerce using the Logger and Log classes.
9
+
10
+ ## Overview
11
+
12
+ B2C Commerce provides a logging framework with:
13
+
14
+ | Feature | Description |
15
+ |---------|-------------|
16
+ | **Log Levels** | debug, info, warn, error, fatal |
17
+ | **Categories** | Organize logs by functional area |
18
+ | **Custom Files** | Write to dedicated log files |
19
+ | **NDC** | Nested Diagnostic Context for tracing |
20
+ | **BM Configuration** | Enable/disable levels per category |
21
+
22
+ ## Log Levels
23
+
24
+ | Level | Method | Description | Default State |
25
+ |-------|--------|-------------|---------------|
26
+ | `debug` | `debug()` | Detailed debugging information | Disabled (never on production) |
27
+ | `info` | `info()` | General information | Disabled by default |
28
+ | `warn` | `warn()` | Warning conditions | Always enabled |
29
+ | `error` | `error()` | Error conditions | Always enabled |
30
+ | `fatal` | `fatal()` | Critical failures | Always enabled, can send email |
31
+
32
+ ## Basic Logging
33
+
34
+ ### Using Logger (Static Methods)
35
+
36
+ The `Logger` class provides static methods for quick logging:
37
+
38
+ ```javascript
39
+ var Logger = require('dw/system/Logger');
40
+
41
+ // Simple messages
42
+ Logger.debug('Debug message');
43
+ Logger.info('Info message');
44
+ Logger.warn('Warning message');
45
+ Logger.error('Error message');
46
+
47
+ // Messages with parameters (Java MessageFormat syntax)
48
+ Logger.info('Processing order {0} for customer {1}', orderNo, customerEmail);
49
+ Logger.error('Failed to process {0}: {1}', productId, errorMessage);
50
+ ```
51
+
52
+ ### Using Log (Instance Methods)
53
+
54
+ The `Log` class provides instance-based logging with categories:
55
+
56
+ ```javascript
57
+ var Logger = require('dw/system/Logger');
58
+
59
+ // Get logger for a category
60
+ var log = Logger.getLogger('checkout');
61
+
62
+ log.debug('Cart contents: {0}', JSON.stringify(cart));
63
+ log.info('Checkout started for basket {0}', basketId);
64
+ log.warn('Inventory low for product {0}', productId);
65
+ log.error('Payment failed: {0}', errorMessage);
66
+ log.fatal('Critical checkout failure: {0}', errorMessage);
67
+ ```
68
+
69
+ ## Categories
70
+
71
+ Categories help organize and filter log messages:
72
+
73
+ ```javascript
74
+ var Logger = require('dw/system/Logger');
75
+
76
+ // Different categories for different areas
77
+ var checkoutLog = Logger.getLogger('checkout');
78
+ var paymentLog = Logger.getLogger('payment');
79
+ var inventoryLog = Logger.getLogger('inventory');
80
+ var integrationLog = Logger.getLogger('integration');
81
+
82
+ // Use appropriate logger
83
+ checkoutLog.info('Order {0} submitted', orderNo);
84
+ paymentLog.info('Payment authorized: {0}', transactionId);
85
+ inventoryLog.warn('Stock level below threshold for {0}', productId);
86
+ integrationLog.error('API call failed: {0}', serviceName);
87
+ ```
88
+
89
+ Categories are configured in Business Manager under **Administration > Operations > Custom Log Settings**.
90
+
91
+ ## Custom Named Log Files
92
+
93
+ Write to dedicated log files instead of the standard custom log files:
94
+
95
+ ```javascript
96
+ var Logger = require('dw/system/Logger');
97
+
98
+ // Get logger with custom file prefix
99
+ var orderExportLog = Logger.getLogger('orderexport', 'export');
100
+ var feedLog = Logger.getLogger('productfeed', 'feed');
101
+
102
+ // Messages go to custom-orderexport-*.log
103
+ orderExportLog.info('Exporting order {0}', orderNo);
104
+
105
+ // Messages go to custom-productfeed-*.log
106
+ feedLog.info('Processing product {0}', productId);
107
+ ```
108
+
109
+ ### File Name Rules
110
+
111
+ The `fileNamePrefix` parameter must follow these rules:
112
+
113
+ | Rule | Requirement |
114
+ |------|-------------|
115
+ | Length | 3-25 characters |
116
+ | Characters | a-z, A-Z, 0-9, `-`, `_` |
117
+ | Start/End | Must start and end with alphanumeric |
118
+ | Not allowed | Cannot start or end with `-` or `_` |
119
+
120
+ ### File Naming Pattern
121
+
122
+ Custom log files follow this pattern:
123
+ ```
124
+ custom-<prefix>-<hostname>-appserver-<date>.log
125
+ ```
126
+
127
+ Example: `custom-orderexport-blade0-1-appserver-20240115.log`
128
+
129
+ ### Quota
130
+
131
+ Maximum 200 different log file names per day per appserver.
132
+
133
+ ## Checking Log Level Status
134
+
135
+ Check if a log level is enabled before expensive operations:
136
+
137
+ ```javascript
138
+ var Logger = require('dw/system/Logger');
139
+ var log = Logger.getLogger('myCategory');
140
+
141
+ // Check before expensive string building
142
+ if (log.isDebugEnabled()) {
143
+ log.debug('Full cart contents: {0}', JSON.stringify(cart));
144
+ }
145
+
146
+ // Check before expensive calculations
147
+ if (log.isInfoEnabled()) {
148
+ var stats = calculateDetailedStats(); // expensive
149
+ log.info('Statistics: {0}', JSON.stringify(stats));
150
+ }
151
+
152
+ // Available checks
153
+ log.isDebugEnabled(); // true if debug logging enabled
154
+ log.isInfoEnabled(); // true if info logging enabled
155
+ log.isWarnEnabled(); // true if warn logging enabled
156
+ log.isErrorEnabled(); // true if error logging enabled
157
+ ```
158
+
159
+ ### Static Level Checks
160
+
161
+ ```javascript
162
+ var Logger = require('dw/system/Logger');
163
+
164
+ if (Logger.isDebugEnabled()) {
165
+ Logger.debug('Debug message');
166
+ }
167
+ ```
168
+
169
+ ## Message Formatting
170
+
171
+ Messages support Java MessageFormat syntax:
172
+
173
+ ```javascript
174
+ var Logger = require('dw/system/Logger');
175
+ var log = Logger.getLogger('order');
176
+
177
+ // Positional parameters
178
+ log.info('Order {0} has {1} items totaling {2}', orderNo, itemCount, total);
179
+
180
+ // Same parameter multiple times
181
+ log.info('Product {0}: {0} is out of stock', productId);
182
+
183
+ // Complex objects (use JSON.stringify for objects)
184
+ log.debug('Request: {0}', JSON.stringify(requestData));
185
+ ```
186
+
187
+ ## Nested Diagnostic Context (NDC)
188
+
189
+ NDC helps trace related log messages across a request:
190
+
191
+ ```javascript
192
+ var Logger = require('dw/system/Logger');
193
+ var Log = require('dw/system/Log');
194
+
195
+ var log = Logger.getLogger('checkout');
196
+ var ndc = Log.getNDC();
197
+
198
+ function processOrder(orderId) {
199
+ // Push context onto the stack
200
+ ndc.push('Order:' + orderId);
201
+
202
+ try {
203
+ log.info('Starting order processing');
204
+ processPayment();
205
+ processShipping();
206
+ log.info('Order processing complete');
207
+ } finally {
208
+ // Always pop context when leaving scope
209
+ ndc.pop();
210
+ }
211
+ }
212
+
213
+ function processPayment() {
214
+ ndc.push('Payment');
215
+ try {
216
+ log.info('Processing payment'); // NDC shows: Order:123 Payment
217
+ } finally {
218
+ ndc.pop();
219
+ }
220
+ }
221
+ ```
222
+
223
+ ### NDC Methods
224
+
225
+ | Method | Description |
226
+ |--------|-------------|
227
+ | `push(message)` | Add context to the stack |
228
+ | `pop()` | Remove and return top context |
229
+ | `peek()` | View top context without removing |
230
+ | `remove()` | Clear entire context |
231
+
232
+ ## Best Practices
233
+
234
+ ### 1. Use Categories
235
+
236
+ ```javascript
237
+ // Good: Organized by functional area
238
+ var log = Logger.getLogger('payment.processor');
239
+ var log = Logger.getLogger('inventory.sync');
240
+ var log = Logger.getLogger('order.export');
241
+
242
+ // Avoid: No category
243
+ Logger.info('Something happened');
244
+ ```
245
+
246
+ ### 2. Check Level Before Expensive Operations
247
+
248
+ ```javascript
249
+ // Good: Check before building expensive string
250
+ if (log.isDebugEnabled()) {
251
+ log.debug('Full response: {0}', JSON.stringify(largeObject));
252
+ }
253
+
254
+ // Avoid: Always building expensive strings
255
+ log.debug('Full response: {0}', JSON.stringify(largeObject));
256
+ ```
257
+
258
+ ### 3. Include Context in Messages
259
+
260
+ ```javascript
261
+ // Good: Includes relevant context
262
+ log.error('Payment failed for order {0}, customer {1}: {2}',
263
+ orderNo, customerId, errorMessage);
264
+
265
+ // Avoid: Missing context
266
+ log.error('Payment failed');
267
+ ```
268
+
269
+ ### 4. Use Appropriate Levels
270
+
271
+ ```javascript
272
+ // debug: Detailed technical information
273
+ log.debug('SQL query: {0}', query);
274
+ log.debug('API request body: {0}', JSON.stringify(body));
275
+
276
+ // info: Notable events
277
+ log.info('Order {0} placed successfully', orderNo);
278
+ log.info('Customer {0} logged in', customerId);
279
+
280
+ // warn: Potential issues
281
+ log.warn('Inventory low for product {0}: {1} remaining', productId, qty);
282
+ log.warn('Slow API response: {0}ms', responseTime);
283
+
284
+ // error: Failures that need attention
285
+ log.error('Payment declined for order {0}: {1}', orderNo, reason);
286
+ log.error('Failed to connect to service {0}: {1}', serviceName, error);
287
+
288
+ // fatal: Critical system failures
289
+ log.fatal('Database connection lost');
290
+ log.fatal('Critical configuration missing: {0}', configKey);
291
+ ```
292
+
293
+ ### 5. Use Custom Log Files for Integration
294
+
295
+ ```javascript
296
+ // Dedicated files for each integration
297
+ var erpLog = Logger.getLogger('erp-sync', 'erp');
298
+ var omsLog = Logger.getLogger('oms-export', 'oms');
299
+ var crmLog = Logger.getLogger('crm-sync', 'crm');
300
+ ```
301
+
302
+ ### 6. Don't Log Sensitive Data
303
+
304
+ ```javascript
305
+ // Good: Mask sensitive data
306
+ log.info('Payment processed for card ending in {0}', cardNumber.slice(-4));
307
+
308
+ // Avoid: Logging sensitive data
309
+ log.info('Payment processed for card {0}', cardNumber);
310
+ ```
311
+
312
+ ## Business Manager Configuration
313
+
314
+ Configure custom logging in **Administration > Operations > Custom Log Settings**:
315
+
316
+ | Setting | Description |
317
+ |---------|-------------|
318
+ | **Log to File** | Enable file logging for each level |
319
+ | **Receive Email** | Email addresses for fatal notifications |
320
+ | **Root Category** | Default settings for all categories |
321
+ | **Custom Categories** | Override settings per category |
322
+
323
+ ### Configuring Categories
324
+
325
+ 1. Go to **Custom Log Settings**
326
+ 2. Click **Add Category**
327
+ 3. Enter category name (e.g., `checkout`, `payment`)
328
+ 4. Set log levels to enable
329
+
330
+ ## Log Output Format
331
+
332
+ Log entries follow this format:
333
+ ```
334
+ [timestamp] [level] [category] message
335
+ ```
336
+
337
+ Example:
338
+ ```
339
+ [2024-01-15 10:30:45.123 GMT] [INFO] [checkout] Order ORD123 placed successfully
340
+ ```
341
+
342
+ ## Detailed Reference
343
+
344
+ - [Log Files](references/LOG-FILES.md) - Log file types, locations, and retention
345
+
346
+ ## Script API Classes
347
+
348
+ | Class | Description |
349
+ |-------|-------------|
350
+ | `dw.system.Logger` | Static logging methods and logger factory |
351
+ | `dw.system.Log` | Logger instance with category support |
352
+ | `dw.system.LogNDC` | Nested Diagnostic Context for tracing |
@@ -0,0 +1,282 @@
1
+ # Log Files Reference
2
+
3
+ Complete reference for B2C Commerce log file types, locations, and management.
4
+
5
+ ## Log File Types
6
+
7
+ ### Custom Log Files
8
+
9
+ Custom log files are generated by script logging:
10
+
11
+ | Log File | Trigger | Default State |
12
+ |----------|---------|---------------|
13
+ | `customdebug` | `Logger.debug()` or `log.debug()` | Disabled |
14
+ | `custominfo` | `Logger.info()` or `log.info()` | Disabled |
15
+ | `customwarn` | `Logger.warn()` or `log.warn()` | Always enabled |
16
+ | `customerror` | `Logger.error()` or `log.error()` | Always enabled |
17
+ | `customfatal` | `log.fatal()` | Always enabled |
18
+
19
+ ### System Log Files
20
+
21
+ System log files are generated by the platform:
22
+
23
+ | Log File | Description |
24
+ |----------|-------------|
25
+ | `error` | System errors in scripts, templates, and platform |
26
+ | `warn` | Lock status, slot warnings, servlet warnings |
27
+ | `info` | System information from scripts and platform |
28
+ | `debug` | Debug information (only when debug flag enabled) |
29
+ | `fatal` | Critical system failures |
30
+ | `api` | API problems and violations |
31
+ | `deprecation` | Usage of deprecated APIs |
32
+ | `jobs` | Job status information |
33
+ | `staging` | Replication process information |
34
+ | `quota` | Quota warnings and limits |
35
+ | `sql` | SQL and replication issues |
36
+ | `syslog` | API processing, staging, import/export info |
37
+ | `sysevent` | Appserver registration, cartridge logs |
38
+ | `analytics` | Analytics activity and errors |
39
+ | `performance` | Internal performance data |
40
+ | `console` | Internal console entries |
41
+ | `migration` | Internal migration data |
42
+ | `dbinit-sql` | SQL used during database initialization |
43
+
44
+ ### Custom Named Log Files
45
+
46
+ Files created with `Logger.getLogger(prefix, category)`:
47
+
48
+ ```
49
+ custom-<prefix>-<hostname>-appserver-<date>.log
50
+ ```
51
+
52
+ Example: `custom-orderexport-blade0-1-appserver-20240115.log`
53
+
54
+ ## Log File Locations
55
+
56
+ ### WebDAV Access
57
+
58
+ **Logs Directory:**
59
+ ```
60
+ https://<instance>.demandware.net/on/demandware.servlet/webdav/Sites/Logs
61
+ ```
62
+
63
+ **Security Logs:**
64
+ ```
65
+ https://<instance>.demandware.net/on/demandware.servlet/webdav/Sites/Securitylogs
66
+ ```
67
+
68
+ **Import/Export Logs:**
69
+ ```
70
+ https://<instance>.demandware.net/on/demandware.servlet/webdav/Sites/Impex/log
71
+ ```
72
+
73
+ ### Business Manager Access
74
+
75
+ 1. **Administration > Site Development > Development Setup**
76
+ 2. Scroll to **WebDAV Access** section
77
+ 3. Click **Log files** link
78
+
79
+ ## Log Retention
80
+
81
+ | Environment | Retention | Notes |
82
+ |-------------|-----------|-------|
83
+ | Production | 30 days | Auto-deleted after retention |
84
+ | Staging | 30 days | Auto-deleted after retention |
85
+ | Development | Not defined | Manual cleanup recommended |
86
+ | Sandbox | Not defined | Manual cleanup recommended |
87
+
88
+ **Security logs** are retained for 90 days.
89
+
90
+ ### Archive Process
91
+
92
+ - After 3 days, logs move to `log_archive` directory
93
+ - Archived logs are compressed to gzip format
94
+ - Download logs locally for longer retention
95
+
96
+ ## Storage Limits
97
+
98
+ ### Custom Log Size Limits
99
+
100
+ | Limit | Value |
101
+ |-------|-------|
102
+ | Per log level per day | 10 MB |
103
+ | Per application server | Per log type |
104
+ | Custom named log files | Same 10 MB limit |
105
+
106
+ When the limit is reached:
107
+ ```
108
+ +++++++++++ Maximum log file size per day reached, logging suspended. +++++++++++
109
+ ```
110
+
111
+ Logging resumes at 00:00 GMT the next day.
112
+
113
+ ### File Count Limits
114
+
115
+ - Maximum 100,000 files per folder
116
+ - Excess files deleted starting with oldest
117
+ - Applies per folder, not across subfolders
118
+
119
+ ### Custom Log File Quota
120
+
121
+ - Maximum 200 different log file prefixes per day
122
+ - Per application server
123
+ - Hard limit (throws exception when exceeded)
124
+
125
+ ## Log Entry Format
126
+
127
+ ### Standard Format
128
+
129
+ ```
130
+ [timestamp GMT] [level] [category] message
131
+ ```
132
+
133
+ Example:
134
+ ```
135
+ [2024-01-15 10:30:45.123 GMT] [INFO] [checkout] Order ORD123 submitted
136
+ ```
137
+
138
+ ### With NDC
139
+
140
+ ```
141
+ [timestamp GMT] [level] [category] [ndc-context] message
142
+ ```
143
+
144
+ Example:
145
+ ```
146
+ [2024-01-15 10:30:45.123 GMT] [INFO] [checkout] [Order:123 Payment] Processing payment
147
+ ```
148
+
149
+ ## Redundancy Tracking
150
+
151
+ Error and Warning messages are tracked for redundancy:
152
+
153
+ - Messages appearing > 10 times in 3 minutes are suppressed
154
+ - Suppression lasts 3 minutes
155
+ - Suppression message:
156
+
157
+ ```
158
+ The following message was generated more than 10 times within the last 180 seconds.
159
+ It will be suppressed for 180 seconds:
160
+ <original message>
161
+ ```
162
+
163
+ ## Quota Log Format
164
+
165
+ Quota logs show when thresholds or limits are exceeded:
166
+
167
+ ```
168
+ [timestamp] [thread-info] Quota quota.name (enforced, warn threshold, limit):
169
+ warn threshold exceeded N time(s), max actual was X, current location: details
170
+ ```
171
+
172
+ Example:
173
+ ```
174
+ [2024-01-15 13:00:22.577 GMT] [RequestHandlerServlet|14320460|Sites-MySite|Product-Show|...]
175
+ Quota api.jsStringLength (enforced, warn 600000, limit 1000000): warn threshold exceeded 1 time(s),
176
+ max actual was 600010, current location: request/site Sites-MySite/top pipeline Product-Show/
177
+ interaction node/template default.CustomDisplay
178
+ ```
179
+
180
+ ## Security Log Format
181
+
182
+ ```
183
+ [timestamp GMT][dw-sec] (User: 'username' (realm), IP: x.x.x.x [ACTION] : details)
184
+ ```
185
+
186
+ Example:
187
+ ```
188
+ [2024-01-15 02:23:19.139 GMT][dw-sec] (User: 'admin' (Sites), IP: 192.168.1.1 [LOGIN] : logged in.)
189
+ ```
190
+
191
+ Actions logged:
192
+ - LOGIN
193
+ - LOGOUT
194
+ - LOGIN_FAILED
195
+ - PASSWORD_CHANGED
196
+ - Re-login (session timeout)
197
+
198
+ ## Import/Export Logs
199
+
200
+ Located in `/Impex/log/`:
201
+
202
+ | Log Type | Description |
203
+ |----------|-------------|
204
+ | Catalog | Catalog import/export logs |
205
+ | Customer | Customer batch processing logs |
206
+ | Inventory | Inventory import logs |
207
+ | Price Book | Price book import/validation logs |
208
+ | Promotion | Promotion validation logs |
209
+ | Metadata | Metadata validation logs |
210
+ | Coupon | Coupon validation logs |
211
+
212
+ Example path:
213
+ ```
214
+ /Impex/log/Batch-Customer-20240115192425062.log
215
+ ```
216
+
217
+ ## Accessing Logs Programmatically
218
+
219
+ ### Via WebDAV Client
220
+
221
+ Configure your WebDAV client with:
222
+ - URL: `https://<instance>/on/demandware.servlet/webdav/Sites/Logs`
223
+ - User: Business Manager username
224
+ - Password: Business Manager password
225
+
226
+ ### Via B2C CLI
227
+
228
+ ```bash
229
+ # Download logs via WebDAV
230
+ b2c webdav pull /Logs --dest ./local-logs
231
+
232
+ # Download specific log
233
+ b2c webdav pull /Logs/customerror-blade0-1-20240115.log
234
+ ```
235
+
236
+ ## Debug Logging on Production
237
+
238
+ Debug logging is **never enabled on production instances**.
239
+
240
+ On non-production instances:
241
+ - Debug logs are "in-memory" by default
242
+ - Enables "Show Request Log" feature
243
+ - Does not generate log files unless explicitly enabled
244
+
245
+ ## Best Practices
246
+
247
+ ### 1. Monitor Log File Sizes
248
+
249
+ Check log sizes regularly to avoid hitting limits:
250
+ - 10 MB per custom log type per day
251
+ - Monitor during high-traffic periods
252
+
253
+ ### 2. Use Custom Named Logs for Integrations
254
+
255
+ ```javascript
256
+ // Separate files for each integration
257
+ var erpLog = Logger.getLogger('erp-sync', 'erp');
258
+ var paymentLog = Logger.getLogger('payment-gateway', 'payment');
259
+ ```
260
+
261
+ ### 3. Clean Up Old Logs
262
+
263
+ - Delete unnecessary logs promptly
264
+ - Don't exceed 100,000 files per folder
265
+ - Download and archive important logs locally
266
+
267
+ ### 4. Configure Categories in Business Manager
268
+
269
+ 1. Go to **Administration > Operations > Custom Log Settings**
270
+ 2. Add categories for your code areas
271
+ 3. Enable appropriate log levels per category
272
+ 4. Set up fatal email notifications
273
+
274
+ ### 5. Use Appropriate Log Levels
275
+
276
+ | Level | Use For |
277
+ |-------|---------|
278
+ | debug | Development debugging only |
279
+ | info | Notable events, job progress |
280
+ | warn | Recoverable issues, slow operations |
281
+ | error | Failures requiring attention |
282
+ | fatal | Critical failures, email notification |