# 日志查看指南 ## 📍 日志位置 根据不同的启动方式,日志位置不同: ### 方式一:宝塔面板进程管理器(推荐) 如果使用宝塔面板的进程管理器启动应用: 1. **登录宝塔面板** → **软件商店** → **进程管理器** 2. 找到你的应用进程(例如:`DouyinLogistics.API`) 3. 点击 **日志** 按钮查看实时日志 **日志文件位置:** ``` /www/server/panel/logs/ ``` ### 方式二:使用 systemd 服务 如果使用 systemd 启动(例如:`/etc/systemd/system/douyin-api.service`): **查看实时日志:** ```bash # 查看实时日志 journalctl -u douyin-api -f # 查看最近100行日志 journalctl -u douyin-api -n 100 # 查看今天的日志 journalctl -u douyin-api --since today # 查看指定时间的日志 journalctl -u douyin-api --since "2024-12-03 14:00:00" --until "2024-12-03 15:00:00" ``` **查看日志文件:** ```bash # systemd 日志位置 /var/log/journal/ ``` ### 方式三:直接运行 dotnet 命令 如果直接在终端运行: ```bash dotnet DouyinLogistics.API.dll --urls http://127.0.0.1:5000 ``` **日志输出位置:** - 直接输出到**控制台(终端)** - 如果重定向到文件,日志在重定向的文件中 **示例(重定向到文件):** ```bash # 启动并重定向日志到文件 dotnet DouyinLogistics.API.dll --urls http://127.0.0.1:5000 > /www/wwwroot/douyin-api/logs/app.log 2>&1 & # 查看日志 tail -f /www/wwwroot/douyin-api/logs/app.log ``` ### 方式四:使用 Supervisor 如果使用 Supervisor 管理进程: **查看日志:** ```bash # 查看 Supervisor 日志 tail -f /var/log/supervisor/douyin-api.log # 或者查看 Supervisor 配置的日志文件位置 cat /etc/supervisor/conf.d/douyin-api.conf | grep stdout_logfile ``` --- ## 🔍 关键日志搜索 ### 查看发货相关日志 ```bash # 搜索发货成功日志 grep "发货成功\|✅.*发货" /path/to/logs # 搜索发货失败日志 grep "发货失败\|❌.*发货" /path/to/logs # 搜索发货接口响应 grep "抖音发货接口响应" /path/to/logs # 搜索发货请求参数 grep "发货请求参数" /path/to/logs ``` ### 查看创建运单相关日志 ```bash # 搜索创建运单日志 grep "创建运单\|logistics.newCreateOrder" /path/to/logs # 搜索运单创建响应 grep "抖音创建运单响应" /path/to/logs ``` ### 查看错误日志 ```bash # 搜索所有错误日志 grep -i "error\|exception\|失败" /path/to/logs # 搜索特定订单的错误 grep "OrderId=你的订单ID" /path/to/logs ``` --- ## 📋 常用日志查看命令 ### 实时查看日志(推荐) ```bash # 方式一:使用 tail -f(如果日志在文件中) tail -f /path/to/logs/app.log # 方式二:使用 journalctl -f(如果使用 systemd) journalctl -u douyin-api -f # 方式三:使用 less +F(可以上下滚动) less +F /path/to/logs/app.log # 按 Ctrl+C 退出实时查看,按 F 重新进入实时查看 ``` ### 查看最近的日志 ```bash # 查看最后100行 tail -n 100 /path/to/logs/app.log # 查看最后1000行并实时更新 tail -n 1000 -f /path/to/logs/app.log ``` ### 搜索特定内容 ```bash # 搜索包含"发货"的日志 grep "发货" /path/to/logs/app.log # 搜索包含"发货"的日志(显示前后5行上下文) grep -C 5 "发货" /path/to/logs/app.log # 搜索包含"发货"的日志(不区分大小写) grep -i "发货" /path/to/logs/app.log # 搜索多个关键词 grep -E "发货成功|发货失败" /path/to/logs/app.log ``` ### 按时间筛选日志 ```bash # 查看今天的日志(如果日志文件按日期命名) cat /path/to/logs/app-$(date +%Y-%m-%d).log # 使用 journalctl 按时间筛选 journalctl -u douyin-api --since "1 hour ago" journalctl -u douyin-api --since "2024-12-03 14:00:00" --until "2024-12-03 15:00:00" ``` --- ## 🎯 快速排查问题 ### 1. 查看发货是否成功 ```bash # 搜索最近的发货日志 grep "发货成功\|发货失败" /path/to/logs | tail -20 ``` ### 2. 查看发货接口的错误信息 ```bash # 查看发货接口的响应 grep -A 10 "抖音发货接口响应" /path/to/logs | tail -50 ``` ### 3. 查看特定订单的完整日志 ```bash # 替换 YOUR_ORDER_ID 为实际订单ID grep "YOUR_ORDER_ID" /path/to/logs ``` ### 4. 查看错误堆栈 ```bash # 查看包含异常堆栈的日志 grep -A 20 "Exception\|Error" /path/to/logs | tail -100 ``` --- ## 💡 宝塔面板推荐配置 ### 方式一:使用宝塔进程管理器(最简单) 1. **宝塔面板** → **软件商店** → **进程管理器** 2. 添加进程: - **名称**: `DouyinLogistics.API` - **启动命令**: `dotnet /www/wwwroot/douyin-api/DouyinLogistics.API.dll --urls http://127.0.0.1:5000` - **运行目录**: `/www/wwwroot/douyin-api` - **日志文件**: `/www/wwwroot/douyin-api/logs/app.log` 3. 点击 **日志** 按钮即可查看实时日志 ### 方式二:创建 systemd 服务 创建文件 `/etc/systemd/system/douyin-api.service`: ```ini [Unit] Description=Douyin Logistics API After=network.target [Service] Type=notify WorkingDirectory=/www/wwwroot/douyin-api ExecStart=/usr/bin/dotnet /www/wwwroot/douyin-api/DouyinLogistics.API.dll --urls http://127.0.0.1:5000 Restart=always RestartSec=10 StandardOutput=journal StandardError=journal SyslogIdentifier=douyin-api User=www Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target ``` 然后: ```bash # 重载 systemd systemctl daemon-reload # 启动服务 systemctl start douyin-api # 设置开机自启 systemctl enable douyin-api # 查看日志 journalctl -u douyin-api -f ``` --- ## 📝 日志级别说明 根据 `appsettings.json` 配置: - **Default**: `Information` - 记录信息级别及以上的日志 - **Microsoft.AspNetCore**: `Warning` - 只记录警告和错误 **日志级别(从低到高):** - `Debug` - 调试信息(最详细) - `Information` - 一般信息(默认) - `Warning` - 警告信息 - `Error` - 错误信息 - `Critical` - 严重错误 **当前代码中的日志级别:** - `_logger.LogDebug()` - 调试信息(默认不显示) - `_logger.LogInformation()` - 一般信息(会显示) - `_logger.LogWarning()` - 警告(会显示) - `_logger.LogError()` - 错误(会显示) --- ## 🔧 临时启用 Debug 日志 如果需要查看更详细的日志,可以临时修改 `appsettings.json`: ```json { "Logging": { "LogLevel": { "Default": "Debug", // 改为 Debug 可以看到更详细的日志 "Microsoft.AspNetCore": "Warning" } } } ``` 修改后需要重启应用才能生效。