- OS: Ubuntu 22.04
- Language: C++ 17
- Compiler: GCC 11.4.0
- Debugger: GDB 12.1
- Build: CMake 3.22.1
- Dependent:
- fmt
- protobuf
基本的配置文件格式如下:
{
"thread": {},
"log": {},
"network": {},
"registry": {},
"database": {}
}
分别为线程池配置、日志器配置、网络配置、注册中心配置、数据库配置。
可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
init_thread_num | Number | 根据硬件情况动态分配 | 初始线程数量 |
max_thread_num | Number | 200 | 最大线程数量 |
max_task_num | Number | 1024 | 最大任务数量 |
dynamic_mode | Boolean | false | 开启动态线程池模式 |
可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
level | String | info | 全局日志等级 |
formatter | String | %# | 全局日志格式化 |
default | String | 默认日志器的名称,如果不存在则保留原始的默认日志器 | |
terminal | Array | 终端字体样式属性设置 | |
logger | Array | 日志器 |
可选的日志等级如下:
trace
:追踪级别debug
:调试级别info
:信息级别warn
:警告级别error
:错误级别fatal
:故障级别(直接退出应用程序)off
:关闭日志
可用的格式化选项如下:
格式化标志 | 格式化内容 | 示例 |
---|---|---|
%a | 工作日简写 | Sun |
%A | 工作日全称 | Sunday |
%b | 月份简写 | Dec |
%B | 月份全称 | December |
%c | 标准的日期字符串 | Tue Aug 31 10:15:42 2021 |
%C | 日志名称 | default_logger |
%d | 月/天/年 | 12/25/21 |
%D | 十进制表示的每月的第几天 | 25 |
%e | 十进制表示的毫秒数 | 943 |
%E | 线程号 | 33423 |
%f | 十进制表示的微秒数 | 943265 |
%F | 年-月-日 | 2020-12-25 |
%g | 自纪元时间以来的秒数 | 1708769224 |
%G | 源文件名称 | main.cpp |
%h | 24小时制的小时 | 23 |
%H | 12小时制的小时 | 11 |
%i | 源文件的完整或相对路径 | /home/user/project/main.cpp |
%I | 源文件的所在行 | 134 |
%j | 十进制表示的每年的第几天 | 342 |
%k | 源文件名称:所在行 | main.cpp:134 |
%K | 完整源文件名称:所在行 | /home/user/project/main.cpp:134 |
%l | 日志级别简写 | I |
%L | 日志级别全称 | info |
%m | 十进制表示的分钟数 | 44 |
%M | 十进制表示的月份 | 5 |
%n | 换行符 | \n |
%N | 十进制表示的纳秒数 | 943265487 |
%p | 本地的AP或PM的等价显示 | AM |
%P | 进程号 | 13324 |
%r | 12小时制的时分秒 | 08:30:45 AM |
%R | 小时和分钟表示的时间 | 14:30 |
%s | 十进制表示的秒数 | 42 |
%t | 水平制表符 | \t |
%T | 24小时制的时分秒 | 14:35:50 |
%v | 日志内容 | some message... |
%y | 不带世纪的十进制年份 | 21 |
%Y | 带世纪的十进制年份 | 2021 |
%z | 时区简写 | CST |
%% | 百分号 | % |
%# | 默认格式 | [2020-12-20 14:32:45.867] [logger_name] [info] [334523] xxxxx |
可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
level | String | 要设定的日志等级 | |
foreground | String | Default | 前景色 |
background | String | Default | 背景色 |
bold | Boolean | false | 加粗 |
italic | Boolean | false | 斜体 |
underline | Boolean | false | 下划线 |
可选颜色如下:
default
:默认black
:黑色red
:红色green
:绿色yellow
:黄色blue
:蓝色purple
:紫色cyan
:青色white
:白色
可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
name | String | 日志器名称 | |
formatter | String | 全局格式化 | 格式化 |
level | String | 全局等级 | 日志等级 |
appender | Array | 日志输出地 |
对于日志输出器,分别有三种形式:控制台(console
)、文件(file
)、旋转文件(rotating_file
),它们分别可以进行不同形式的配置。在配置时必须指定相对应的输出器类型,即 type
字段。
控制台可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
type | String | 输出器类型,必须指定为console |
|
level | String | 日志器等级 | 日志等级 |
formatter | String | 日志器格式化 | 格式化 |
multi_thread | Boolean | true | 是否支持多线程 |
文件可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
type | String | 输出器类型,必须指定为file |
|
level | String | 日志器等级 | 日志等级 |
formatter | String | 日志器格式化 | 格式化 |
multi_thread | Boolean | true | 是否支持多线程 |
filename | String | 日志文件名称,必须指定 | |
rewrite | Boolean | true | 每次重启应用时是否覆写文件 |
async | Boolean | false | 是否支持异步输出 |
旋转文件可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
type | String | rotating_file | 输出器类型,必须指定为rotating_file |
level | String | 日志器等级 | 日志等级 |
formatter | String | 日志器格式化 | 格式化 |
multi_thread | Boolean | true | 是否支持多线程 |
filename | String | 日志文件名称,必须指定 | |
max_file_num | int | 最大文件数目,必须指定 | |
max_file_size | int | 最大文件大小,单位为字节,必须指定 | |
async | Boolean | false | 是否支持异步输出 |
如果日志文件名称为
log.txt
,且最大文件数量为3,那么会按照如下顺序依次旋转输出日志:log.txt ==> log.1.txt ==> log.2.txt ==> log.txt
网络配置主要用于配置服务器相关参数,其可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
ip | String | 127.0.0.1 | 对客户端暴露的IP地址 |
port | Number | 8000 | 端口号 |
name | String | RpcProvider | 服务器名称 |
reuse_port | Boolean | false | 是否复用端口号 |
loopback_onley | Boolean | false | 是否仅监听本地地址 |
subloop_num | Number | 3 | 子事件循环的数量 |
注册中心配置主要用于配置注册中心的相关参数,便于RPC服务提供者和RPC服务请求者与注册中心进行信息交互。其可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
ip | String | 127.0.0.1 | IP地址 |
port | Number | 8888 | 端口号 |
数据库配置主要用于配置数据库连接池,其可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
max_idle_interval | Number | 50000 | 连接的最大空闲时间,单位ms |
connect_timeout | Number | 1000 | 连接的最大超时时间,单位ms |
mysql | Object | MySQL配置,不可为空 | |
redis | Object | Redis配置,可为空 |
不使用数据库连接池时请不要在配置文件中出现
database
字段,如果出现则表示启用数据库连接池,则必须配置mysql
字段。
mysql
字段主要用于配置 MySQL 数据库的相关配置,其可配置参数如下:
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
init_size | Number | 2 | 连接的初始数量 |
max_size | Number | 20 | 连接的最大数量 |
port | Number | 3306 | MySQL服务器端口号 |
ip | String | "127.0.0.1" | MySQL服务器IP地址 |
username | String | "root" | 用户名 |
password | String | 密码,必须配置 | |
database | String | 数据库名,必须配置 |
可配置项 | 数据类型 | 默认参数 | 说明 |
---|---|---|---|
init_size | Number | 2 | 连接的初始数量 |
max_size | Number | 20 | 连接的最大数量 |
port | Number | 6379 | Redis服务器端口号 |
ip | String | "127.0.0.1" | Redis服务器IP地址 |