[ % 游戏配置 {game_server, [ {server_type, game_server}, %% 服务器类型 {platform_zone, 0}, %% 平台专区 0-通用专区 1-小程序 2-app {tcp_port, 18001}, %% tcp端口 {http_port, 19001}, %% http端口,需要对T后台/蜂鸟平台等公司第三方平台开放 {server_id, 1}, %% 服务器id {server_name, "内部测试"}, %% 区服名称 {main_platform, "android_cn"}, %% 游戏专区简称 {merge_server_ids, []}, %% 被合服到本服的服务器id,格式[[1,3],5] 表示1、2、3、5服被合到本服 {login_node, 'login_server_s900@172.16.14.176'}, %% 登录服节点名 {center_node, 'center_server_s800@172.16.14.176'}, %% 中心服节点名 {open_time, {{2025, 2, 10}, {5, 0, 0}}}, %% 开服时间 {gm_auth, false}, %% 开启GM {is_develop, false}, %% 开发模式 {is_inner, false}, %% 是否内网服务器 {is_mainland, true}, %% 内容审核区分服务器true表示大陆服 %% 日志文件配置 {logger, [ %% info日志 %% 使用ms_logger_std模板 {handler, info, ms_logger_std, #{ level => info, config => #{ %% 输出文件路径 file => "log/info.log", %% 时间检测,表示1000毫秒内最多处理500个日志事件,超出则丢弃新的日志事件 burst_limit_enable => true, burst_limit_max_count => 500, burst_limit_window_time => 1000, %% 日志进程消息低于该值,使用异步通讯,反之则用同步通讯 = 200, %% 日志进程消息高于该值,丢弃新投递的消息,= 200, %% 日志进程消息高于该值,丢弃信箱内的所有消息(语义上与drop_mode_qlen冲突,应该是系统不是实时监测消息队里,应该是定期监测??) flush_qlen => 1000, %% 单个文件最大字节数(200M) max_no_bytes => 209715200, %% 最多保留文件数(10个) max_no_files => 10 }, %% 默认打印日志 %% 默认不打印日志,是否打印通过filters判断 filter_default => stop, %% metadata的map结构中没有domain的日志会被输出到文件 filters => [ {domain, {fun logger_filters:domain/2, {log, equal, [ms_base]}}} %% 输出 do_main=[ms_base] 的日志 ], %% 输出格式 %% 输出格式使用logger_formatter模板 formatter => {logger_formatter, #{ %% 单行日志最多2000个字节 max_size => 2000, %% 每个日志不分行,忽略msg里的~n,也是系统默认值 single_line => false, %% 不增加默认标题,也是系统默认值 legacy_header => false, template => ["====| ", time, " | ", level, " | ", {id, [id], ["undefined"]}, " | ", mfa, ":", line, " | ", pid, " |====\n", msg, "\n"] %% 输出格式,其中log_time,tag,id是调用方法时metadata中传入 }} }}, %% error日志 %% 使用ms_logger_std模板 {handler, error, ms_logger_std, #{ level => error, config => #{ %% 输出文件路径 file => "log/error.log", %% 时间检测,表示1000毫秒内最多处理500个日志事件,超出则丢弃新的日志事件 burst_limit_enable => true, burst_limit_max_count => 500, burst_limit_window_time => 1000, %% 日志进程消息低于该值,使用异步通讯,反之则用同步通讯 = 200, %% 日志进程消息高于该值,丢弃新投递的消息,= 200, %% 日志进程消息高于该值,丢弃信箱内的所有消息(语义上与drop_mode_qlen冲突,应该是系统不是实时监测消息队里,应该是定期监测??) flush_qlen => 1000, %% 单个文件最大字节数(200M) max_no_bytes => 209715200, %% 最多保留文件数(10个) max_no_files => 10 }, %% 默认不打印日志,是否打印通过filters判断 filter_default => stop, %% metadata的map结构中没有domain的日志会被输出到文件 filters => [ {domain, {fun logger_filters:domain/2, {log, equal, [ms_base]}}} %% 输出 do_main=[ms_base] 的日志 ], %% 输出格式 %% 输出格式使用logger_formatter模板 formatter => {logger_formatter, #{ %% 单行日志最多10000个字节,出错的尽量完整输出 max_size => 10000, %% 每个日志不分行,忽略~n,也是系统默认值 single_line => false, %% 不增加默认标题,也是系统默认值 legacy_header => false, template => ["====| ", time, " | ", level, " | ", {id, [id], ["undefined"]}, " | ", mfa, ":", line, " | ", pid, " |====\n", msg, "\n"] %% 输出格式,其中log_time,tag,id是调用方法时metadata中传入 }} }}, %% http信息日志(info及以上级别) {handler, http_log, ms_logger_std, #{ level => info, config => #{ %% 输出文件路径 file => "log/http_info.log", burst_limit_enable => true, burst_limit_max_count => 500, burst_limit_window_time => 1000, sync_mode_qlen => 200, drop_mode_qlen => 200, flush_qlen => 1000, max_no_bytes => 209715200, max_no_files => 10 }, %% 默认不打印日志,是否打印通过filters判断 filter_default => stop, %% 只打印domain = [ms_http]的日志 filters => [ {http_domain, {fun logger_filters:domain/2, {log, equal, [ms_http]}}} %% 输出 do_main=[ms_http] 的日志 ], formatter => {logger_formatter, #{ max_size => 10000, single_line => false, legacy_header => false, template => ["====| ", time, " | ", level, " | ", {id, [id], ["undefined"]}, " | ", mfa, ":", line, " | ", pid, " |====\n", msg, "\n"] %% 输出格式,其中log_time,tag,id是调用方法时metadata中传入 }} }} %% %% 错误输出到im %% {handler, im, ms_logger_im, #{ %% level => error, %% config => #{ %% url => "https://messenger-api.4399om.com/open/v1/message/bot/hook/fe06c413-5914-4124-b3b5-79261c5fdef1" %% }, %% filter_default => stop, %% filters => [{no_domain, {fun logger_filters:domain/2, {log, undefined, []}}}], %% formatter => {logger_formatter, #{ %% legacy_header => false, %% max_size => 10000, %% single_line => false, %% template => [time, " [", level, "]", {id, [id], ["none"]}, "(", mfa, ":", line, ")(", pid, ") : ", msg, "\n"] %% }} %% }} %% ]} ]} ]}, %% ms_cache缓存配置 {ms_cache, [ {data_node, undefined}, % 缓存节点,undefined为缓存app启动在本节点 {cache_db_type, ets}, % 缓存在内存的储存位置 proc | ets | mnesia(mnesia暂不支持) {data_fmt, record}, % 缓存数据存取的格式, record | map, 默认为record {table_worker_count, 8}, % 每个内存表对应处理的进程数(哈希分组到各个进程) {db_save_time, 120000}, % (定时同步参数)缓存定期同步到数据库的时间间隔,单位毫秒;默认值 600000 {db_save_count, 1000}, % (定量同步参数)缓存待同步数量上限,达到数量触发同步数据库操作;默认值 1000 {db_driver, 'mysql-otp'}, % 使用的数据库驱动(当前只支持mysql-otp第三方驱动,可扩展支持mongo和emysql) {db_user, "dhmmcadmin"}, % 数据库用户 {db_pass, "dhmmc@4399$$"}, % 数据库密码 {db_host, "172.16.14.176"}, % 数据库地址 {db_port, 3306}, % 数据库端口 {db_name, "dhmmc_s1_game"}, % 数据库名 {db_encoding, utf8}, % 数据库编码(mysql-otp驱动下没用到) {db_select_pool_name, select_pool_name}, % 数据库查询链接名 {db_select_pool_size, 32}, % 数据库查询链接池容量 {db_select_pool_overflow, 128}, {db_update_pool_name, update_pool_name}, % 数据库更新链接名(增删改都使用该链接) {db_update_pool_size, 10}, % 数据库更新链接池容量 {db_sync_options, #{ create_table => true, % 是否自动创建表,正式服为true drop_table => false, % 是否自动删除表,正式服为false alter_table => true, % 是否自动修改表,正式服为true patch_run_mod => auto, % 补丁运行模式,auto-自动运行,正式服为{env,"ERLANG_RUN_PATCH"} patch_prefix => "patch_", % 补丁文件的前缀名 limit => 7 % 最多检查近x条补丁,如有遗漏追加执行,外网建议设置为1 }} ]}, %% ms_tbllog后台日志配置 {ms_tbllog, [ {data_node, undefined}, % 缓存节点,undefined为缓存app启动在本节点 {data_fmt, record}, % 缓存数据存取的格式, record | map, 默认为record {db_save_start_time, 60000}, % 从起服到开始同步数据库的时间最小值,单位毫秒;默认值 600000 {db_save_time, 120000}, % (定时同步参数)缓存定期同步到数据库的时间间隔,单位毫秒;默认值 600000 {db_save_count, 1000}, % (定量同步参数)缓存待同步数量上限,达到数量触发同步数据库操作;默认值 1000 {db_driver, 'mysql-otp'}, % 使用的数据库驱动(当前只支持mysql-otp第三方驱动,可扩展支持mongo和emysql) {db_user, "dhmmcadmin"}, % 数据库用户 {db_pass, "dhmmc@4399$$"}, % 数据库密码 {db_host, "172.16.14.176"}, % 数据库地址 {db_port, 3306}, % 数据库端口 {db_name, "dhmmc_s1_log"}, % 数据库名 {db_encoding, utf8}, % 数据库编码(mysql-otp驱动下没用到) {db_update_pool_name, tbllog_pool_name}, % 数据库更新链接名(增删改都使用该链接) {db_update_pool_size, 10} % 数据库更新链接池容量 ]}, %% kernel配置 {kernel, [ %% erlang节点间通讯端口号区域 {inet_dist_listen_min, 16000}, {inet_dist_listen_max, 17000}, %% 低于这个日志级别的日志都不会被输出,包括上面game_server的日志;(外网该值要改成info) {logger_level, debug}, {logger, [ %% 总控过滤,默认不输出 {filters, stop, [ {domain, {fun logger_filters:domain/2, {log, equal, [ms_base]}}} %% 输出 do_main=[ms_base] 的日志 , {http_domain, {fun logger_filters:domain/2, {log, equal, [ms_http]}}} %% 输出 do_main=[ms_http] 的日志 ]}, %% 控制台日志输出 %% 使用logger_std_h模板 {handler, default, logger_std_h, #{ %% 日志等级,linux该值该未none,linux不需要控制台日志输出;linux下live启动的时候也没日志。。。额 level => debug, %% 其他没有列出的参数使用默认值 %% logger_level=info 及以上的日志会被输出 filter_default => stop, %% 过滤条件 filters => [{need_level, {fun logger_filters:level/2, {log, gteq, info}}}], %% 输出格式 formatter => {logger_formatter, #{ %% 单行日志最多10000个字节 max_size => 10000, %% 每个日志不分行,忽略~n,也是系统默认值 single_line => false, %% 不增加默认标题 legacy_header => false, template => ["====| ", time, " | ", level, " | ", {id, [id], ["undefined"]}, " | ", mfa, ":", line, " | ", pid, " |====\n", msg, "\n"] %% 输出格式,其中log_time,tag,id是调用方法时metadata中传入 }} }} ]} ]}, %% sasl配置 {sasl, [ %% 关闭SASL日志 {sasl_error_logger, false} ]} ].