CentOS环境下Java日志监控策略
logback.xml或Log4j2的log4j2.xml)动态调整,无需修改代码。JsonLayout),便于后续采集和分析。catch块中必须打印异常对象(e.printStackTrace()或日志框架的error("message", e)),避免重复记录异常(如嵌套try-catch中重复打印),确保异常堆栈完整。logrotate自动切割、压缩、删除旧日志,配置示例如下(保存为/etc/logrotate.d/java_logs):/path/to/java/logs/*.log {
daily # 每日轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志(如.gz格式)
missingok # 文件不存在时不报错
notifempty # 日志为空时不轮转
create 0644 root root # 创建新日志文件并设置权限
}
logrotate通常由cron每日自动执行(位于/etc/cron.daily/logrotate)。RollingFileAppender):<RollingFile name="RollingFile" fileName="/path/to/logs/app.log"
filePattern="/path/to/logs/app-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/> <!-- 按天轮转 -->
<SizeBasedTriggeringPolicy size="10 MB"/> <!-- 单个文件最大10MB -->
</Policies>
<DefaultRolloverStrategy max="10"/> <!-- 最多保留10个文件 -->
</RollingFile>
```。
tail -f /path/to/java.log命令实时跟踪日志末尾变化,快速查看最新日志;结合grep过滤关键词(如tail -f java.log | grep "ERROR"),定位错误日志。mail命令发送告警邮件,添加到cron定时执行(如每5分钟运行一次):#!/bin/bash
LOG_FILE="/path/to/java.log"
EMAIL="admin@example.com"
ERROR_COUNT=$(grep -o "ERROR" "$LOG_FILE" | wc -l)
if [ "$ERROR_COUNT" -gt 10 ]; then
echo "Alert: High error count in Java app log: $ERROR_COUNT" | mail -s "Java App Log Alert" "$EMAIL"
fi
```。