AKStream.Next · 文档中心

查看 AKStream.Next 原始日志及保存路径

查看 AKStream.Next 原始日志及保存路径

本页帮助实施和运维人员在 Linux、Windows、macOS 或 Docker 环境中找到 AKStream.Next 的原始日志,持续查看新日志,并判断应该检查应用文件还是宿主服务日志。

本页列出官方安装器的默认路径。x64 与 ARM64 使用相同目录;如果安装时修改了程序目录,或在 akstream.next.json 中修改了 Serilog 文件路径,应以当前实例的实际配置为准。

日志可能包含设备编号、内网地址、请求参数和异常堆栈。发送给第三方前应先脱敏,不要公开数据库连接串、密码、Token、Secret 或客户信息。

flowchart LR
    A[AKStream.Next 主服务] --> B[按日期保存的应用文件]
    A --> C[标准输出与标准错误]
    C --> D[Linux journald]
    C --> E[Windows 事件日志]
    C --> F[macOS launchd 文件]
    C --> G[Docker 容器日志]

先看结论

AKStream.Next 有两类日志:

  1. 应用文件日志:由 Serilog 写入,文件名通常为 akstream-next-YYYYMMDD.log;同一天按大小滚动时还会产生带分卷编号的文件。这类日志适合历史查询和归档。
  2. 宿主服务日志:主服务和 NodeAgent 写到标准输出或操作系统日志。程序尚未完成首次配置、配置文件无效或进程启动早期崩溃时,应优先查看这一类日志。
部署方式 主服务应用文件日志 主服务与 NodeAgent 的宿主日志
Linux x64 / ARM64 /opt/AKStream.Next/AKStream.Next/logs/akstream-next-YYYYMMDD*.log systemd journal,通过 journalctl 或 akn logs 查看
Windows x64 / ARM64 %ProgramFiles%\AKStream.Next\AKStream.Next\logs\akstream-next-YYYYMMDD*.log Windows“应用程序”事件日志,通过事件查看器或 akn logs 查看
macOS Intel / Apple Silicon /Library/Application Support/AKStream.Next/AKStream.Next/logs/akstream-next-YYYYMMDD*.log /Library/Application Support/AKStream.Next/Data/Logs/ 下的 stdout、stderr 文件
Docker 容器内 /app/Data/Logs/akstream-next-YYYYMMDD*.log;宿主机为 <部署根目录>/Data/Logs/ 通过 docker logs 查看;底层保存位置由 Docker 日志驱动决定

首次配置完成后,系统生成的主配置会同时启用控制台输出和按日期滚动的文件日志。首次配置尚未完成时,按日期文件可能还不存在,此时直接查看宿主服务日志。

在 Linux 上查看日志

Linux x64 和 ARM64 的默认路径完全相同。使用官方安装器且没有指定自定义安装目录时,应用文件位于:

/opt/AKStream.Next/AKStream.Next/logs/

列出已经生成的日志:

sudo ls -lh /opt/AKStream.Next/AKStream.Next/logs/

通过统一管理命令查看主服务和托管 MediaServer 最近 500 行日志:

sudo akn logs -n 500 main

持续跟踪主服务日志,按 Ctrl+C 退出:

sudo akn logs -f main

只查看 NodeAgent:

sudo akn logs -f agent

也可以直接查询 systemd journal:

sudo journalctl -u akstream-next.service -n 500 --no-pager
sudo journalctl -u akstream-next-agent.service -n 500 --no-pager
sudo journalctl -u akstream-next.service -f

systemd journal 不是普通文本日志。启用持久化时,底层数据通常位于 /var/log/journal/;使用易失存储时通常位于 /run/log/journal/,重启后可能丢失。不要直接编辑这些二进制文件,应使用 journalctl 导出需要的时间范围。

如果安装时使用了 --install-dir,主服务应用文件路径随程序目录变化:

<自定义安装目录>/AKStream.Next/logs/

可以读取 systemd 实际工作目录进行确认:

systemctl show akstream-next.service -p WorkingDirectory

在 Windows 上查看日志

官方默认安装下,主服务应用文件位于:

%ProgramFiles%\AKStream.Next\AKStream.Next\logs\

在 PowerShell 中列出日志:

Get-ChildItem "$env:ProgramFiles\AKStream.Next\AKStream.Next\logs" `
  -Filter 'akstream-next-*.log' |
  Sort-Object LastWriteTime -Descending

使用统一管理命令读取最新主服务日志:

akn logs -n 500 -LogScope main
akn logs -f -LogScope main

只查看 NodeAgent:

akn logs -f -LogScope agent

主服务没有产生文件日志,或者在文件日志初始化前退出时,打开“事件查看器 → Windows 日志 → 应用程序”,检查来源为 AKStream.Next 或 AKStream.Next.NodeAgent 的事件。

历史版本或自定义 Windows 服务宿主可能把相对日志路径解析到其他工作目录。akn logs 会在以下受信任位置中选择最新的 akstream-next-*.log:

  • %ProgramFiles%\AKStream.Next\AKStream.Next\logs
  • %ProgramData%\AKStream.Next\Logs
  • %ProgramData%\AKStream.Next\Config\logs
  • %SystemRoot%\System32\logs

如果发现日志落在非默认位置,应检查服务的实际启动命令和主配置,不要长期依赖兼容目录。

在 macOS 上查看日志

macOS 同时保存主服务应用文件和 launchd 捕获的标准输出、标准错误。

主服务应用文件默认位于:

/Library/Application Support/AKStream.Next/AKStream.Next/logs/

launchd 日志默认位于:

/Library/Application Support/AKStream.Next/Data/Logs/

其中包括:

akstream-next.stdout.log
akstream-next.stderr.log
akstream-next-agent.stdout.log
akstream-next-agent.stderr.log

使用统一管理命令查看:

sudo akn logs -n 500 main
sudo akn logs -f main
sudo akn logs -f agent

也可以直接读取 launchd 文件:

sudo tail -n 500 \
  '/Library/Application Support/AKStream.Next/Data/Logs/akstream-next.stdout.log'

sudo tail -F \
  '/Library/Application Support/AKStream.Next/Data/Logs/akstream-next.stderr.log'

服务在首次配置、权限检查或运行时加载阶段退出时,stderr 往往比应用文件更早记录失败原因。

在 Docker 中查看日志

主容器中的应用文件默认位于:

/app/Data/Logs/akstream-next-YYYYMMDD*.log

/app/Data 是宿主机持久化目录的挂载点。使用默认部署根目录时,宿主机日志位于:

~/AKStream.Next-Docker/Data/Logs/

如果安装时通过 --root 指定了目录,则实际位置为:

<部署根目录>/Data/Logs/

查看三个容器最近 500 行输出:

docker logs --tail 500 akstream-next
docker logs --tail 500 akstream-next-agent
docker logs --tail 500 akstream-next-mysql

持续跟踪主容器:

docker logs --follow --tail 500 akstream-next

查询 /app/Data 在宿主机上的实际目录:

docker inspect akstream-next \
  --format '{{range .Mounts}}{{if eq .Destination "/app/Data"}}{{.Source}}{{end}}{{end}}'

查看 Docker 日志驱动和底层日志路径:

docker inspect akstream-next \
  --format 'driver={{.HostConfig.LogConfig.Type}} path={{.LogPath}}'

使用 json-file 驱动的原生 Linux Docker 通常把容器输出保存在 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log。Docker Desktop 会把该目录放在内部虚拟机中。不要直接编辑、截断或删除底层 JSON 文件,应使用 docker logs,并通过 Docker 日志轮转配置控制磁盘占用。

确认当前实例的真实路径

默认路径只适用于官方安装器生成的配置。最终文件位置由主配置中的 Serilog File Sink 决定:

Serilog → WriteTo → Async → configure → File → Args → path

默认值为:

logs/akstream-next-.log

它是相对路径,基于 AKStream.Next 主服务的实际工作目录解析。Docker 官方配置使用绝对路径 /app/Data/Logs/akstream-next-.log。

检查配置时只需要查看 Serilog 部分,不要把完整配置复制到聊天、工单或截图中,因为同一文件可能包含数据库密码和流媒体服务 Secret。

怎样确认已经找到正确日志

满足下面三项即可:

  1. 日志文件或宿主日志的最后更新时间与当前服务器时间接近。
  2. akn logs -f、journalctl -f 或 docker logs -f 能持续显示当前实例的新日志。
  3. 日志中的节点 ID、集群 ID 和版本与 akn info 显示的当前实例一致。

如果服务无法启动,先保存最早出现的异常、完整堆栈和前后至少 50 行上下文。不要只截取最后一行,也不要先删除日志或反复重装。

下一步:使用 akn 管理服务;如果日志已经找到但仍无法判断故障位置,进入问题定位器。