记录服务器消息(实时服务器)
您可以在日志文件中捕获来自实时服务器的自定义服务器消息。要了解有关自定义服务器日志记录的信息,请参阅记录服务器消息(自定义服务器)。
您可以将不同类型的消息输出到日志文件中(请参阅在服务器脚本中记录消息)。除了您的自定义消息外,实时服务器还使用相同的消息类型输出系统消息并写入相同的日志文件。您可以调整实例集的日志记录级别,以减少服务器生成的日志消息量(请参阅调整日志记录级别)。
重要
每个游戏会话的日志文件大小有限制(参阅AWS 一般参考 中的 Amazon GameLift 端点和限额)。游戏会话结束时,Amazon GameLift 会将服务器日志上传到 Amazon Simple Storage Service (Amazon S3)。Amazon GameLift 不会上传超过限制的日志。日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。
在服务器脚本中记录消息
您可以在实时服务器脚本中输出自定义消息。可以使用以下步骤将服务器消息发送到日志文件:
-
创建一个变量来保存对记录器对象的引用。
var logger;
-
在
init()
函数中,从会话对象中获取记录器并将其分配给您的记录器变量。function init(rtSession) { session = rtSession; logger = session.getLogger(); }
-
在记录器上调用相应的函数以输出消息。
调试消息
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...");
有关脚本中日志语句的示例,请参阅实时服务器脚本示例。
日志文件中的输出指示消息的类型(DEBUG
、INFO
、WARN
、ERROR
、FATAL
、CXFATAL
),如示例日志中的以下几行所示:
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.
获取服务器日志
游戏会话结束后,Amazon GameLift 会自动将日志存储在 Amazon S3 中,并保留这些日志 14 天。要获取游戏会话日志的位置,可以使用 GetGameSessionLogUrl API 调用。使用 API 调用返回的 URL 下载日志。
调整日志记录级别
日志的增长速度可能非常快,并且会超过大小限制。您应该监控日志,将日志输出限制为仅显示必要的消息。对于实时服务器,您可以通过在实例集的运行时配置中以 loggingLevel:
形式提供一个参数来调整日志记录级别,其中 LOGGING_LEVEL
是以下值之一:LOGGING_LEVEL
-
debug
-
info
(默认值) -
warn
-
error
-
fatal
-
cxfatal
此列表按从最不严重(debug
)到最严重(cxfatal
)的顺序排列。您设置了单个 loggingLevel
,服务器将只记录该严重性级别或更高严重级别的消息。例如,设置 loggingLevel:error
将使实例集中的所有服务器仅向日志写入 error
、fatal
和 cxfatal
消息。
可以在创建实例集时或运行之后为实例集设置日志记录级别。在实例集运行后更改其日志记录级别只会影响更新后创建的游戏会话日志。任何现有游戏会话的日志都不会受到影响。如果您在创建实例集时未设置日志记录级别,则您的服务器会将日志记录级别默认设置为 info
。有关设置日志记录级别的说明,请参阅以下部分。
创建实时服务器实例集时设置日志记录级别(控制台)
按照创建 Amazon GameLift 托管式 EC2 实例集中的说明创建您的实例集,并添加以下内容:
-
在进程管理步骤的服务器进程分配子步骤中,提供日志记录级别键-值对(例如
loggingLevel:error
)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如loggingLevel:error +map Winter444
)分开。
创建实时服务器实例集时设置日志记录级别(AWS CLI)
按照创建 Amazon GameLift 托管式 EC2 实例集中的说明创建您的实例集,并添加以下内容:
-
在
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 实例集配置中的说明使用 Amazon GameLift 控制台更新您的实例集,并添加以下内容:
-
在编辑实例集页面的服务器进程分配下,提供日志记录级别键-值对(例如
loggingLevel:error
)作为启动参数的值。使用非字母数字字符(逗号除外)将日志记录级别与任何其他参数(例如loggingLevel:error +map Winter444
)分开。
设置正在运行的实时服务器实例集的日志记录级别(AWS CLI)
按照更新 Amazon GameLift 实例集配置中的说明使用 AWS 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}]"