记录服务器消息(实时服务器) - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录服务器消息(实时服务器)

您可以在日志文件中捕获来自实时服务器的自定义服务器消息。要了解有关自定义服务器日志记录的信息,请参阅记录服务器消息(自定义服务器)

您可以将不同类型的消息输出到日志文件中(请参阅在服务器脚本中记录消息)。除了您的自定义消息外,实时服务器还使用相同的消息类型输出系统消息并写入相同的日志文件。您可以调整实例集的日志记录级别,以减少服务器生成的日志消息量(请参阅调整日志记录级别)。

重要

每个游戏会话的日志文件大小有限制(参见中的 Amazon GameLift 终端节点和配额 Amazon Web Services 一般参考)。游戏会话结束后,亚马逊会将服务器日志 GameLift 上传到亚马逊简单存储服务 (Amazon S3) Service。Amazon GameLift 不会上传超过限制的日志。日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。

在服务器脚本中记录消息

您可以在实时服务器脚本中输出自定义消息。可以使用以下步骤将服务器消息发送到日志文件:

  1. 创建一个变量来保存对记录器对象的引用。

    var logger;
  2. init() 函数中,从会话对象中获取记录器并将其分配给您的记录器变量。

    function init(rtSession) { session = rtSession; logger = session.getLogger(); }
  3. 在记录器上调用相应的函数以输出消息。

    调试消息

    logger.debug("This is my debug message...");

    信息性消息

    logger.info("This is my info message...");

    警告消息

    logger.warn("This is my warn message...");

    错误消息

    logger.error("This is my error message...");

    致命错误消息

    logger.fatal("This is my fatal error message...");

    客户体验致命错误消息

    logger.cxfatal("This is my customer experience fatal error message...");

有关脚本中日志语句的示例,请参阅实时服务器脚本示例

日志文件中的输出指示消息的类型(DEBUGINFOWARNERRORFATALCXFATAL),如示例日志中的以下几行所示:

09 Sep 2021 11:46:32,970 [INFO] (gamelift.js) 215: Calling GameLiftServerAPI.InitSDK...
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 220: GameLiftServerAPI.InitSDK succeeded
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 223: Waiting for Realtime server to start...
09 Sep 2021 11:46:33,15 [WARN] (index.js) 204: Connection is INSECURE. Messages will be sent/received as plaintext.

获取服务器日志

游戏会话结束后,亚马逊 GameLift 会自动将日志存储在 Amazon S3 中并将其保留 14 天。您可以使用 GetGameSessionLogUrl API 调用来获取游戏会话的日志位置。使用 API 调用返回的 URL 下载日志。

调整日志记录级别

日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。对于实时服务器,您可以通过在实例集的运行时配置中以 loggingLevel:LOGGING_LEVEL 形式提供一个参数来调整日志记录级别,其中 LOGGING_LEVEL 是以下值之一:

  1. debug

  2. info(默认值)

  3. warn

  4. error

  5. fatal

  6. cxfatal

此列表按从最不严重(debug)到最严重(cxfatal)的顺序排列。您设置了单个 loggingLevel,服务器将只记录该严重性级别或更高严重级别的消息。例如,设置 loggingLevel:error 将使实例集中的所有服务器仅向日志写入 errorfatalcxfatal 消息。

可以在创建实例集时或运行之后为实例集设置日志记录级别。在实例集运行后更改其日志记录级别只会影响更新后创建的游戏会话日志。任何现有游戏会话的日志都不会受到影响。如果您在创建实例集时未设置日志记录级别,则您的服务器会将日志记录级别默认设置为 info。有关设置日志记录级别的说明,请参阅以下部分。

创建实时服务器实例集时设置日志记录级别(控制台)

按照创建 Amazon GameLift 托管实例集中的说明创建您的实例集,并添加以下内容:

  • 进程管理步骤的服务器进程分配子步骤中,提供日志记录级别键-值对(例如 loggingLevel:error)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如 loggingLevel:error +map Winter444)分开。

创建实时服务器实例集时设置日志记录级别(Amazon CLI)

按照创建 Amazon GameLift 托管实例集中的说明创建您的实例集,并添加以下内容:

  • create-fleet--runtime-configuration 参数中,提供日志记录级别键-值对(例如 loggingLevel:error)作为Parameters的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数分开。请参见以下示例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"
设置正在运行的实时服务器实例集的日志记录级别(控制台)

按照中的说明使用 Amazon GameLift 控制台更新您的舰队,并添加以下内容:更新实例集配置

  • 编辑实例集页面的服务器进程分配下,提供日志记录级别键-值对(例如 loggingLevel:error)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如 loggingLevel:error +map Winter444)分开。

设置正在运行的实时服务器实例集的日志记录级别(Amazon CLI)

按照更新实例集配置中的说明使用 Amazon CLI 更新您的实例集,并添加以下内容:

  • update-runtime-configuration--runtime-configuration 参数中,提供日志记录级别键-值对(例如 loggingLevel:error)作为Parameters的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数分开。请参见以下示例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"