传奇LogServer报错无法记录日志的完整排查

来源: 作者: 点击:
LogServer游戏日志服务器弹英文确定框,提示当前没有需要记录的日记,点确定后主控制器后续服务全部卡住不运行,这个现象在单机架设中很常见。取消LogServer后其他服务能跑起来,但登录器进游戏像掉线一样,人物走不动或者动几下就卡回原位,说明核心服务之间存在依赖关系,跳过了日志服务器导致数据回写链路被切断。

**LogServer报错的直接成因**

报错框里那段英文翻译过来是日志文件写入路径无效或磁盘空间不足。LogServer启动时会先检测指定目录下是否存在日志存储文件夹,以及该文件夹是否有写入权限。如果服务端解压后没有生成完整的目录结构,或者日志文件夹被设置成只读属性,程序找不到可写入的路径就会弹窗。

处理这个报错,先关闭所有服务端窗口,进入服务端根目录下的`LogServer`文件夹,查看里面是否有`Log`子目录。没有的话手动创建一个,名字就叫`Log`。然后右键点击`LogServer.exe`或主控制器,选择属性,在兼容性选项卡里勾选“以管理员身份运行此程序”。管理员权限能解决大部分写入权限受限的问题。

如果依然弹窗,打开LogServer目录下的`Config.ini`或`!Setup.txt`,查找`LogPath`或`SaveLog`开头的配置行,确保后面填写的路径指向了刚才新建的Log文件夹,并且路径写法是`D:\MirServer\LogServer\Log\`这种完整格式,不能使用相对路径。

**取消LogServer后游戏掉线的本质原因**

主控制器上取消LogServer,登录器和游戏引擎都能正常启动,但进游戏后人物动作不同步、走几步就弹回原地,这种状况实际上是游戏网关和角色网关的数据没有正常写入日志数据库,导致M2Server无法保存角色坐标和状态变更。LogServer虽然名字叫日志服务器,但在传奇引擎的架构里,它同时承担着游戏数据缓冲和事务记录的功能。跳过它,M2Server处理玩家移动、攻击、拾取这些操作后,找不到数据回写的接收端,就会放弃本次操作,客户端和服务端的数据就不同步了,表现出来就是掉线感。

根本解决方法还是要修好LogServer,而不是绕过它。按照上面处理报错的方法把路径和权限弄对,让LogServer正常跑起来,掉线问题自然消失。

**如果LogServer反复报错仍然无法启动**

少数情况下,LogServer程序文件本身损坏或者被杀毒软件隔离了部分组件。去服务端压缩包里重新提取一份完整的LogServer文件夹,覆盖现有的目录,注意不要覆盖Config配置文件里的路径设置。覆盖前先彻底卸载原有的日志服务,在命令行窗口执行`sc delete LogServer`,清理掉残留的系统服务注册项。重新覆盖后,再次以管理员身份运行主控制器。

还有一种情况是磁盘剩余空间不足。LogServer启动时会预分配日志文件空间,如果当前磁盘剩余容量小于1GB,就会拒绝启动。清理磁盘空间,至少保证有3GB以上的空闲容量。

**替代方案:手动指定日志写入方式**

如果按上述方法始终无法让LogServer正常启动,可以用一种变通方案。修改主控制器或M2Server配置文件里的日志写入模式,把默认的“写入日志服务器”改成“写入本地文本文件”。具体操作是打开M2Server目录下的`!Setup.txt`,找到`LogMode`这一项,把后面的数值改成`0`。改成0之后,M2Server会把操作日志直接写在本地硬盘上,不再通过LogServer转发。这样既不需要启动LogServer,又能保证数据回写正常,人物不会掉线。

改完之后重新启动主控制器,其他所有服务正常开启,唯独跳过LogServer。进入游戏测试移动、杀怪、捡物品,如果操作流畅不再回弹,说明变通方案生效。注意这种方式下的日志文件会以文本形式存放在M2Server目录的`Log`子文件夹里,可以定期清理以免占满硬盘。