ps -ef | grep java命令列出所有运行中的Java进程,获取进程ID(PID)以便后续操作。application.properties中logging.file.name=logs/application.log,Tomcat的catalina.out),需根据实际情况查找。tail -f /path/to/logfile.log命令实时监控日志最新内容,便于快速捕捉异常。grep "ERROR" /path/to/logfile.log过滤包含“ERROR”的日志行,或结合awk、sed提取特定字段(如时间戳、类名),缩小问题范围。/etc/logrotate.d/java(自定义配置文件),添加如下规则实现自动轮转:/path/to/java/logs/*.log {
daily # 按天轮转
rotate 7 # 保留7个备份
compress # 压缩旧日志(如.gz格式)
missingok # 忽略缺失文件
notifempty # 非空文件才轮转
create 0644 root root # 轮转后创建新文件并设置权限
}
测试配置有效性:logrotate -d /etc/logrotate.d/java(模拟运行),确认无误后重载:systemctl reload logrotate。logback.xml中配置RollingFileAppender,实现基于时间/大小的轮转:<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern> # 按日期归档并压缩
<maxHistory>30</maxHistory> # 保留30天日志
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
input(如从文件读取/path/to/java/logs/*.log)、filter(解析日志格式)、output(发送到Elasticsearch);http://<服务器IP>:5601,创建索引模式即可查看日志。logback.xml中的root或logger级别(如<root level="DEBUG">),支持TRACE(最细)、DEBUG(调试)、INFO(常规)、WARN(警告)、ERROR(错误)等级别。log4j2.xml中的<Root level="INFO">,或通过log4j2.component.properties文件动态调整。-D参数覆盖配置文件中的级别,例如:java -Dlogging.level.root=DEBUG -jar your-application.jar
此方式无需重启应用,适用于生产环境紧急调试。#!/bin/bash
BACKUP_DIR="/path/to/backup/java_logs"
DATE=$(date +%Y%m%d)
# 备份日志
cp /path/to/java/logs/*.log "$BACKUP_DIR/java_$DATE.log"
# 压缩备份
gzip "$BACKUP_DIR/java_$DATE.log"
# 删除30天前的备份
find "$BACKUP_DIR" -name "java_*.log.gz" -mtime +30 -exec rm -f {} \;
0 0 * * * /path/to/backup_java_logs.sh
确保脚本有执行权限:chmod +x /path/to/backup_java_logs.sh。PatternLayout或encoder替换敏感字段(如密码、手机号),例如Logback中可使用%replace过滤器:<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %replace(%msg){'password=[^&]*', 'password=****'}%n</pattern>
</encoder>
640(所有者可读写,组可读,其他无权限),避免未授权访问:chmod 640 /path/to/java/logs/*.log
chown root:tomcat /path/to/java/logs/*.log # 假设应用用户为tomcat
logwatch生成每日日志报告,或goaccess分析Web访问日志,通过邮件发送异常告警(如ERROR日志超过阈值)。ERROR数量,超过设定值时发送邮件或短信,例如:#!/bin/bash
ERROR_COUNT=$(grep -c "ERROR" /path/to/java/logs/*.log)
if [ "$ERROR_COUNT" -gt 10 ]; then
echo "Java应用ERROR日志超过10条,请检查!" | mail -s "Java日志告警" admin@example.com
fi
将脚本添加到Cron中,每5分钟执行一次:*/5 * * * * /path/to/monitor_java_logs.sh。