用于快速构建项目的基础库
推荐使用 uapp
app := zapp.NewApp("test")
app.Run()
- 我们实现了一些插件, 可以在 这里 找到
- 这里 内置了一些 filter
- 我们实现了一些服务, 可以在 这里 找到
- 请转到 这里
初始化时添加 zapp.WithEnableDaemon()
选项, 构建后使用以下命令
./app文件
install [args] 安装服务, args 是运行时传递给 app 的参数
remove 移除服务
start 启动app
stop 停止app
status 查看运行状态
初始化时添加 zapp.WithHandler(...)
选项
BeforeInitializeHandler 在app初始化前
AfterInitializeHandler 在app初始化后
BeforeStartHandler 在app启动前
AfterStartHandler 在app启动后
BeforeExitHandler 在app退出前
AfterExitHandler 在app退出后
初始化时添加 zapp.WithCustomEnablePlugin(...)
选项, zapp 会根据返回值来决定开启和关闭哪些插件
zapp.WithCustomEnablePlugin(func(app core.IApp, plugins []core.PluginType) []core.PluginType {
if !app.GetConfig().HasFlag("my_plugin") {
plugins = append(plugins, "my_plugin")
}
return plugins
})
初始化时添加 zapp.WithCustomEnableService(...)
选项, zapp 会根据返回值来决定开启和关闭哪些服务
zapp.WithCustomEnableService(func(app core.IApp, services []core.ServiceType) []core.ServiceType) Option {
if !app.GetConfig().HasFlag("api_service") {
services = append(services, "api")
}
return services
})
core.ILogger
提供了 NewTraceLogger(ctx context.Context, fields ...zap.Field) ILogger
方法用于创建一个带链路id的 logger(前提是ctx中包含有效的span).
使用生成的log打印日志会带上链路id, 并且我们会根据不同的链路id输出不同的颜色.
core.ILogger
提供了 NewSessionLogger(fields ...zap.Field) ILogger
方法用于创建一个会话 logger.
使用会话logger打印日志会产生一个全局日志id, 并且我们会根据不同的全局日志id输出不同的颜色.
日志打印时可以将 ctx
传入, 如果 ctx
中包含 traceID
那么在日志输出中会带上 traceID
. 示例 app.Info(ctx, "test")
初始化 > 用户操作 > 启动 > 退出
app := zapp.NewApp(...)
> 生成BaseContext
> 加载配置 > 初始化日志记录器 > 构建组件 > 构建插件 > 构建并初始化 filter > 构建服务
用户在这里对服务进行注入, 如注入插件, 注入服务等.
app.Run()
> 启动插件 > 启动服务 > 启动内存释放任务 > 阻塞等待退出信号
app.Exit() 或收到退出信号
> 关闭BaseContext
> 停止内存释放任务 > 关闭服务 > 关闭 filter > 关闭插件 > 释放组件资源 > 结束之前调用app.Run()的阻塞