电脑之家
柔彩主题三 · 更轻盈的阅读体验

服务器端日志怎么看?手把手教你快速定位问题

发布时间:2026-04-19 23:30:33 阅读:5 次

网站打不开、接口返回500、后台任务突然卡住……遇到这些情况,别急着重启服务,先看看服务器日志——它就像服务器的“行车记录仪”,记下了每一步操作和异常细节。

日志文件通常藏在哪?

不同服务存放位置不一样,但常见路径有这些:

  • Nginx:/var/log/nginx/access.log(访问记录)和 error.log(错误信息)
  • Apache:/var/log/apache2/access.log 和 error.log(Ubuntu/Debian)或 /var/log/httpd/(CentOS)
  • Tomcat:/opt/tomcat/logs/catalina.out(主日志,含启动、报错、Java异常)
  • Node.js 应用:一般由你自己指定,比如 ./logs/app.log 或通过 pm2 logs 查看

不确定路径?登录服务器后,先试试:

ps aux | grep -E '(nginx|apache|java|node)'
看进程参数里有没有 --log-file-Dlog4j.configurationFile 这类线索。

怎么看才不懵?盯住这三类关键信息

1. 时间戳:日志开头那一串带年月日时分秒的字段,比如 [24/Jul/2024:10:22:31 +0800]。排查问题时,先对齐你收到用户反馈的时间,再往前后翻1–2分钟的日志。

2. 状态码:HTTP 请求里最直观的“病情诊断书”。看到大量 502 Bad Gateway,说明 Nginx 找不到后端;满屏 500 Internal Server Error,就得去查应用日志里的 Java/Python 异常堆栈;而 404 频繁出现,可能是前端路由写错或静态资源路径配置漏了。

3. 错误关键词:直接搜 ExceptionERRORTracebackfailedConnection refused。Linux 下常用:

tail -f /var/log/nginx/error.log | grep "ERROR"
或者实时追踪并高亮:
tail -f catalina.out | grep --color=always -i "exception\|error\|fatal"

举个真实例子:用户说“提交订单总失败”

你登上服务器,打开 Tomcat 日志:

tail -n 200 catalina.out

扫到这么一段:

Caused by: java.sql.SQLTimeoutException: Timeout after 30000ms of waiting for a connection.<br>at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:199)<br>at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)

立刻明白:数据库连接池耗尽,不是代码逻辑错,而是 DB 响应慢或连接没释放。接下来就该查 MySQL 的 show processlist,或者看是否有长事务堵着。

小技巧:别硬翻,善用工具

日志动辄几百MB?别用 vim 慢慢拖。推荐几个顺手操作:

  • 查某IP最近10次请求:grep "192.168.1.100" access.log | tail -10
  • 统计每分钟请求数(适合压测分析):awk '{print $4}' access.log | cut -c2-18 | sort | uniq -c | sort -nr | head -20
  • lnav(装法:sudo apt install lnav):支持语法高亮、按状态码过滤、跳转错误行,体验接近 IDE。

最后提醒一句:生产环境别关日志,也别只留1天——至少保留7天,磁盘够用的话建议30天。出问题时,昨天的日志,可能就是救命稻草。