Startup Banner
启动横幅(service / port / format)
Elogs 启动时会在控制台打印一行横幅,告诉你服务跑在哪个端口。生产环境可以关掉,或者换成不画框的简洁文本。
默认行为
import { Elysia } from 'elysia'
import { createElogs } from '@eastgold15/elogs'
new Elysia().use(createElogs()).listen(3000)
启动后控制台会输出一个带 ASCII 框的横幅:
┌─────────────────────────────────────────────────┐
│ │
│ Elysia v1.4.19 │
│ │
│ 🦊 Elysia is running at http://localhost:3000 │
│ │
└─────────────────────────────────────────────────┘
配置
startup 字段在 CreateElogsOptions 根级,跟 config 平级:
| 字段 | 类型 | 默认 | 描述 |
|---|---|---|---|
show |
boolean |
true |
是否在启动时输出横幅 |
format |
"simple" | "banner" |
"banner" |
"banner" = ASCII 框,"simple" = 单行文本 |
import { createElogs } from '@eastgold15/elogs'
createElogs({
startup: {
show: false, // 完全关闭
},
})
createElogs({
startup: {
format: 'simple', // 单行,无 ASCII 框
},
})
simple 模式输出:
🦊 Elysia is running at http://localhost:3000
preset 默认值
dev / prod / json 三套内置 preset 在 StartupConfig 上有自己的默认值:
| Preset | show |
format |
|---|---|---|
dev |
true |
"banner" |
prod |
false |
"banner" |
json |
false |
"banner" |
显式 startup 字段会覆盖 preset 的值。
import { createElogs } from '@eastgold15/elogs'
createElogs({
preset: 'prod', // prod 默认 show: false
startup: { show: true }, // 显式覆盖,生产也想看横幅
})
程序化渲染
renderBanner(message) 公开导出,返回 ASCII 框字符串(不打印)。要自己写 CLI 工具、嵌进别的输出流时直接调:
import { renderBanner } from '@eastgold15/elogs'
console.log(renderBanner('🛰 My service is up at http://localhost:3000'))
// ┌──────────────────────────────────────────────────┐
// │ │
// │ Elysia v1.4.19 │
// │ │
// │ 🛰 My service is up at http://localhost:3000 │
// │ │
// └──────────────────────────────────────────────────┘
renderBanner接收的只是单行 message;版本行(“Elysia vX.Y.Z”)是函数内部自动拼的。
startServer 内部钩子
startServer(server, options) 是 Elogs 内部在 .setup() 阶段调用的钩子 —— 它从 Elysia 拿到的 server 对象(带 port / hostname / protocol)读出 URL,然后调 renderBanner 或 console.log 输出。
一般情况下你不需要直接调
startServer,createElogs()内部已经接好。只有在自己写非 Elysia 启动流程(比如Bun.serve()配 Elysia handler)时才用。
import { startServer } from '@eastgold15/elogs'
Bun.serve({
port: 3000,
fetch: app.fetch,
})
// 手动驱动 banner
startServer({ port: 3000, hostname: 'localhost', protocol: 'http' }, { startup: { show: true } })
关闭 banner
生产环境想干净一点:
createElogs({
startup: { show: false },
})
或者用 prod preset(它默认就是关闭的):
createElogs({ preset: 'prod' })
相关 API
StartupConfig— 启动选项类型renderBanner— 单独渲染 banner 字符串startServer— 内部启动钩子CreateElogsOptions.startup— 根级startup字段