{
  "schemaVersion": 1,
  "citationId": "ecn:v4/requirements-management/layers@400740a#logger",
  "citeUrl": "/cite/18c06267e79776e0.json",
  "digest": "18c06267e79776e0",
  "slug": "v4/requirements-management/layers",
  "version": "v4",
  "title": "管理 Layer",
  "anchor": "logger",
  "headingPath": [
    "创建 Layer",
    "Logger"
  ],
  "pageUrl": "/docs/v4/requirements-management/layers/",
  "deepLink": "/docs/v4/requirements-management/layers/#logger",
  "officialUrl": "https://effect.website/docs/v4/requirements-management/layers",
  "upstreamPath": "v4/requirements-management/layers.mdx",
  "upstreamCommit": "400740a57415e9e6f0457538a309745b0e50da6f",
  "upstreamRawUrl": "https://raw.githubusercontent.com/Effect-TS/website/400740a57415e9e6f0457538a309745b0e50da6f/apps/web/src/content/docs/v4/requirements-management/layers.mdx",
  "status": "published",
  "stale": false,
  "contentHash": "40f592a7937e6bed",
  "chunkText": "现在我们继续实现 Logger service，它依赖 Config service 来获取一些配置。\n\n正如我们在管理 Service页面中所做的那样，我们可以 yield Config service key，从 Context 中“提取”该 service。\n\n由于使用 Config service key 是一个带 Effect 的操作，我们使用 Layer.effect 从生成的 Effect 创建 Layer。\n\n// Declaring a service key for the Config service\nclass Config extends Context.Service<\n Config,\n {\n readonly getConfig: Effect.Effect<{\n readonly logLevel: string\n readonly connection: string\n }>\n }\n()(\"Config\") {}\n\n// Layer<Config, never, never>\nconst ConfigLive = Layer.succeed(Config, {\n getConfig: Effect.succeed({\n logLevel: \"INFO\",\n connection: \"mysql://username:password@hostname:port/databasename\",\n }),\n})\n\n// De …\n\n观察 LoggerLive 的类型：\n\nLayer<Logger, never, Config>\n\n我们可以发现：\nRequirementsOut 是 Logger\nError 是 never，表明 Layer 构造不会失败\nRequirementsIn 是 Config，表明该 Layer 有一个需求",
  "generatedAt": "2026-09-18T14:48:33.525Z"
}
