update
This commit is contained in:
81
dev/logs.ps1
Normal file
81
dev/logs.ps1
Normal file
@ -0,0 +1,81 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
查看本地服务的运行日志(dev.ps1 用后台进程启动,输出不落在终端)。
|
||||
|
||||
.DESCRIPTION
|
||||
dev.ps1 把后端/前端的 stdout/stderr 重定向到 .logs\ 下的文件,
|
||||
所以「服务在跑但终端没有任何输出」是正常的。本脚本就是看那些文件的入口。
|
||||
|
||||
每个服务有两个文件:
|
||||
.logs\<name>.log 标准输出(业务日志、gin 路由、astro 启动信息)
|
||||
.logs\<name>.err.log 标准错误(编译报错、panic、连接失败)
|
||||
|
||||
.EXAMPLE
|
||||
.\dev\logs.ps1
|
||||
看后端最近 50 行(默认)
|
||||
|
||||
.EXAMPLE
|
||||
.\dev\logs.ps1 frontend -Lines 100
|
||||
看前端最近 100 行
|
||||
|
||||
.EXAMPLE
|
||||
.\dev\logs.ps1 backend -Follow
|
||||
持续跟随后端日志(Ctrl+C 退出),等价于 Get-Content -Wait
|
||||
|
||||
.EXAMPLE
|
||||
.\dev\logs.ps1 all
|
||||
三个服务的日志都看一遍(只看不跟随)
|
||||
#>
|
||||
param(
|
||||
[Parameter(Position = 0)]
|
||||
[ValidateSet('backend', 'frontend', 'vision', 'all')]
|
||||
[string]$Name = 'backend',
|
||||
|
||||
[int]$Lines = 50,
|
||||
|
||||
[switch]$Follow
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$CliRoot = Split-Path -Parent $PSScriptRoot
|
||||
$LogDir = Join-Path $CliRoot '.logs'
|
||||
|
||||
if (-not (Test-Path $LogDir)) {
|
||||
Write-Host " 还没有日志:$LogDir" -ForegroundColor Yellow
|
||||
Write-Host " 先跑 .\dev\dev.ps1 启动服务" -ForegroundColor Gray
|
||||
exit 1
|
||||
}
|
||||
|
||||
$targets = if ($Name -eq 'all') { @('backend', 'frontend', 'vision') } else { @($Name) }
|
||||
|
||||
if ($Follow -and $targets.Count -gt 1) {
|
||||
Write-Host " -Follow 一次只能跟一个服务,改成:.\dev\logs.ps1 backend -Follow" -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
|
||||
foreach ($t in $targets) {
|
||||
foreach ($suffix in @('.log', '.err.log')) {
|
||||
$f = Join-Path $LogDir ($t + $suffix)
|
||||
if (-not (Test-Path $f)) { continue }
|
||||
|
||||
$size = (Get-Item $f).Length
|
||||
Write-Host ''
|
||||
Write-Host (" --- {0}{1} ({2} 字节) ---" -f $t, $suffix, $size) -ForegroundColor DarkGray
|
||||
|
||||
if ($size -eq 0) {
|
||||
Write-Host ' (空文件:进程可能刚启动,或输出还在缓冲区)' -ForegroundColor DarkGray
|
||||
continue
|
||||
}
|
||||
|
||||
if ($Follow) {
|
||||
# -Wait 会阻塞直到 Ctrl+C;先打最近 N 行再跟随新增内容
|
||||
Write-Host " 跟随中,Ctrl+C 退出" -ForegroundColor DarkGray
|
||||
Get-Content -Path $f -Tail $Lines -Wait
|
||||
} else {
|
||||
Get-Content -Path $f -Tail $Lines | ForEach-Object { Write-Host " $_" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ''
|
||||
Write-Host ' PID 登记:.run\<name>.pid 状态:.\dev\status.ps1' -ForegroundColor DarkGray
|
||||
Reference in New Issue
Block a user