JSP应用在Ubuntu上的日志管理
导读:JSP应用在Ubuntu上的日志管理 一 日志来源与存放位置 容器与应用日志:JSP运行在Apache Tomcat之上,首要关注Tomcat日志,常见路径为**/var/log/tomcat9/**,核心文件包括:catalina.ou...
JSP应用在Ubuntu上的日志管理
一 日志来源与存放位置
- 容器与应用日志:JSP运行在Apache Tomcat之上,首要关注Tomcat日志,常见路径为**/var/log/tomcat9/**,核心文件包括:catalina.out(标准输出/错误)、localhost..log(主机日志)、localhost_access_log..txt(访问日志)。这些文件覆盖启动、部署、运行期异常与访问轨迹,是排查问题的第一现场。对于使用包管理器安装的Tomcat,日志默认即写入该目录。
- 应用内日志:业务日志建议使用日志框架输出到应用目录(如**/var/log/yourapp/**),便于与应用实例生命周期解耦,并与系统日志策略统一管理。
二 在JSP中输出日志
- 使用java.util.logging(JUL)
- 代码示例:
< %@ page import="java.util.logging.Logger" %> < % Logger log = Logger.getLogger(request.getServletPath()); log.info("JSP loaded, sessionId=" + session.getId()); try { int x = 1 / 0; } catch (Exception e) { log.severe("Unhandled error: " + e.getMessage()); } %> - 说明:JUL为JDK内置,零依赖,适合轻量场景;可通过配置实现按大小/时间滚动。
- 代码示例:
- 使用Log4j 1.x
- 依赖(Maven):
< dependency> < groupId> log4j< /groupId> < artifactId> log4j< /artifactId> < version> 1.2.17< /version> < /dependency> - 配置示例(src/main/resources/log4j.properties):
log4j.rootLogger=INFO, FILE log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=/var/log/yourapp/app.log log4j.appender.FILE.MaxFileSize=10MB log4j.appender.FILE.MaxBackupIndex=7 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{ yyyy-MM-dd HH:mm:ss} %-5p %c{ 1} :%L - %m%n - 在JSP中:
< %@ page import="org.apache.log4j.Logger" %> < % Logger log = Logger.getLogger("MyJspPage"); log.info("Log4j info from JSP"); %> - 说明:RollingFileAppender可自动按大小滚动并保留历史。
- 依赖(Maven):
- 使用Log4j2
- 依赖(Maven,示例版本2.17.1):
< dependency> < groupId> org.apache.logging.log4j< /groupId> < artifactId> log4j-api< /artifactId> < version> 2.17.1< /version> < /dependency> < dependency> < groupId> org.apache.logging.log4j< /groupId> < artifactId> log4j-core< /artifactId> < version> 2.17.1< /version> < /dependency> - 配置示例(src/main/resources/log4j2.xml):
< ?xml version="1.0" encoding="UTF-8"?> < Configuration status="WARN"> < Appenders> < Console name="Console" target="SYSTEM_OUT"> < PatternLayout pattern="%d{ HH:mm:ss.SSS} [%t] %-5level %logger{ 36} - %msg%n"/> < /Console> < RollingFile name="RollingFile" fileName="/var/log/yourapp/app.log" filePattern="/var/log/yourapp/app-%d{ yyyy-MM-dd} -%i.log.gz"> < PatternLayout pattern="%d{ yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{ 36} - %msg%n"/> < Policies> < TimeBasedTriggeringPolicy interval="1" modulate="true"/> < SizeBasedTriggeringPolicy size="10 MB"/> < /Policies> < DefaultRolloverStrategy max="7"/> < /RollingFile> < /Appenders> < Loggers> < Root level="info"> < AppenderRef ref="Console"/> < AppenderRef ref="RollingFile"/> < /Root> < /Loggers> < /Configuration> - 在JSP中:
< %@ page import="org.apache.logging.log4j.LogManager, org.apache.logging.log4j.Logger" %> < % Logger log = LogManager.getLogger(request.getServletPath()); log.info("Log4j2 info from JSP"); %> - 说明:Log4j2性能与功能更完善,支持按时间与大小滚动、异步日志等。
- 依赖(Maven,示例版本2.17.1):
三 系统级日志轮转与权限
- 使用logrotate集中管理应用日志(推荐)
- 新建配置:/etc/logrotate.d/yourapp
/var/log/yourapp/*.log { daily rotate 7 compress missingok notifempty create 640 tomcat adm copytruncate } - 要点:
- 选择copytruncate以避免应用持有文件句柄导致轮转失败(适合无法发送信号的应用)。
- 若应用支持SIGHUP重开日志,可改用postrotate发送信号(如 kill -USR1)并去掉copytruncate。
- 权限建议:Tomcat运行用户常为tomcat,组为adm,与上面create保持一致。
- 新建配置:/etc/logrotate.d/yourapp
- 容器日志轮转
- Tomcat自身也会写入catalina.out等大文件,建议同样用logrotate管理(路径为**/var/log/tomcat9/catalina.out**),策略可按日轮转并压缩保留7–30天。
四 集中式日志与日常运维
- 集中式日志
- 将应用日志发送到ELK Stack(Elasticsearch、Logstash、Kibana)或Graylog,统一采集、检索、可视化与告警;适合多实例、多环境。
- 日常运维命令
- 实时查看容器日志:
sudo tail -f /var/log/tomcat9/catalina.out - 查看系统日志(若应用接入syslog/journald):
sudo tail -f /var/log/syslog journalctl -u tomcat9 -f - 查看访问日志(分析流量与错误码):
sudo tail -f /var/log/tomcat9/localhost_access_log.*.txt - 检查磁盘与增长趋势:
df -h du -sh /var/log/yourapp /var/log/tomcat9 - 安全建议:避免在日志中打印密码、密钥、个人敏感信息;为日志目录设置最小权限(如640,属主tomcat:adm)。
- 实时查看容器日志:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JSP应用在Ubuntu上的日志管理
本文地址: https://pptw.com/jishu/759432.html
