大家好,我是Java架构师
-
日志采集层 :通过 Hera Agent 嵌入 SpringBoot 应用,无侵入式采集日志,支持自定义字段(如链路 ID、用户 ID、业务标签)
-
平台层 :Hera 核心,负责日志清洗、字段解析、按业务规则路由存储
-
存储层 :核心日志存 ES(支持快速检索),归档日志存 HDFS(降低成本)
-
分析层 :提供全文检索、链路追踪、日志聚合统计等能力
-
交互层 :通过 Web 控制台或 OpenAPI,让开发者高效查看日志
xml 体验AI代码助手 代码解读复制代码<!-- Hera日志客户端依赖 -->
<dependency>
<groupId>com.hera</groupId>
<artifactId>hera-log-spring-boot-starter</artifactId>
<version>2.5.3</version>
</dependency>
<!-- 链路追踪依赖(可选,用于全链路日志串联) -->
<dependency>
<groupId>com.hera</groupId>
<artifactId>hera-trace-spring-boot-starter</artifactId>
<version>2.5.3</version>
</dependency>
yaml体验AI代码助手代码解读复制代码spring:
application:
name:order-service# 应用名,会作为Hera日志的“服务标签”
# Hera日志核心配置
hera:
log:
# Hera Agent地址(必填,可配置多个,用逗号分隔)
agent-address:192.168.1.101:8888,192.168.1.102:8888
# 日志输出级别(默认INFO,生产环境建议WARN+,避免日志过多)
level:INFO
# 自定义日志字段(核心!用于业务维度筛选)
custom-fields:
-key:businessType# 字段名:业务类型
value:${spring.application.name}-order# 值:订单服务
-key:env# 字段名:环境
value:${spring.profiles.active:dev}# 值:当前环境(dev/test/prod)
-key:userId# 字段名:用户ID(从ThreadLocal中获取,需自定义实现)
value-provider:com.example.order.config.HeraUserIdProvider
# 链路追踪配置(可选,开启后自动生成链路ID)
trace:
enabled:true# 开启链路追踪
sampling-rate:1.0# 采样率(生产环境高并发时可设0.5,避免性能损耗)
trace-id-header:X-Hera-Trace-Id# 链路ID在HTTP头中的key,用于跨服务传递
typescript 体验AI代码助手 代码解读复制代码@Component
publicclass HeraUserIdProvider implements HeraCustomFieldProvider {
@Override
publicString getValue() {
// 从ThreadLocal中获取当前用户ID(需结合项目的登录拦截器实现)
UserContext context = UserContextHolder.getCurrentContext();
return context != null ? context.getUserId() : unknown;
}
}
scss 体验AI代码助手 代码解读复制代码@Service
public class OrderService {
private static final Logger log = LoggerFactory.getLogger(OrderService.class);
public Order createOrder(OrderCreateDTO dto) {
// 1. 业务逻辑
Order order = new Order();
order.setOrderNo(generateOrderNo());
order.setUserId(dto.getUserId());
order.setAmount(dto.getAmount());
// 2. 输出日志(按Hera配置自动携带自定义字段和链路ID)
log.info(创建订单成功,订单号:{},用户ID:{}, order.getOrderNo(), order.getUserId());
// 3. 异常日志(自动携带堆栈信息,Hera支持查看完整堆栈)
try {
orderMapper.insert(order);
} catch (Exception e) {
log.error(创建订单失败,订单号:{},原因:{}, order.getOrderNo(), e.getMessage(), e);
throw new BusinessException(订单创建失败);
}
return order;
}
}
ini 体验AI代码助手 代码解读复制代码# 订单服务日志(traceId: 8f9d7e6c5b4a39281706)
2024-05-20 14:30:00 [INFO] [http-nio-8080-exec-1] com.example.order.service.OrderService - 创建订单成功,订单号:2024052014300001,用户ID:1001
# 支付服务日志(同一traceId)
2024-05-20 14:30:02 [INFO] [http-nio-8081-exec-3] com.example.pay.service.PayService - 订单支付成功,订单号:2024052014300001,支付金额:99.00
-
筛选服务与环境 :在控制台顶部选择 “服务名 = order-service”、“环境 = prod”,快速定位目标应用日志
-
按业务字段检索 :比如输入 “userId=1001”,筛选该用户的所有订单相关日志;或输入 “orderNo=2024052014300001”,精准定位某笔订单的日志
-
查看链路与堆栈 :点击日志中的traceId,可查看全链路日志;点击异常日志的 “堆栈” 按钮,可查看完整的异常堆栈信息,无需登录服务器下载日志文件
-
异步采集 :Hera Agent 默认采用异步方式采集日志,避免阻塞应用主线程,可通过hera.log.async-queue-size=1024调整异步队列大小(默认 512)
-
日志分级 :生产环境避免输出过多 DEBUG 日志,通过hera.log.level=WARN限制日志级别,仅核心业务输出 INFO 日志
-
批量传输 :Hera 支持日志批量传输,通过hera.log.batch-size=100设置批量大小(默认 50),减少网络 IO 次数
-
Agent 集群 :部署多个 Hera Agent 节点,配置文件中填写所有 Agent 地址(逗号分隔),避免单个 Agent 故障导致日志丢失
-
本地缓存 :当 Hera Agent 不可用时,Hera 客户端会将日志缓存到本地文件(默认路径/tmp/hera/log/cache),Agent 恢复后自动补发,避免日志丢失
-
存储分级 :核心业务日志存储在 ES(支持 7 天快速检索),同时归档到 HDFS(保留 30 天),非核心业务日志直接存储到 HDFS,平衡性能与成本
-
字段脱敏 :通过 Hera 配置对敏感字段(如手机号、身份证号)进行脱敏,比如hera.log.mask-fields=phone:138
1234,idCard:310
*1234
-
权限控制 :Hera 支持按 “服务 + 环境” 配置权限,比如开发人员只能查看测试环境日志,生产环境日志仅运维和架构师可查看
-
操作审计 :记录所有日志查看、导出操作,避免敏感日志被非法获取
-
效率提升 :将日志排查时间从 “小时级” 缩短到 “分钟级”,某电商平台接入后,平均排障时间从 2 小时降至 15 分钟
-
成本降低 :通过分级存储和日志过滤,节省 60% 的日志存储成本,同时减少工程师的日志排查时间成本
-
可观测性增强 :通过链路追踪和日志聚合,让分布式系统的 “黑盒” 变 “白盒”,快速定位性能瓶颈和业务异常。
你还有什么想要补充的吗?
在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!
最后,再次推荐下我们的AI星球:
为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索ChatGPT和新的AI时代。
有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这四天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。
不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了8个专栏、18个副业项目:
简单说下这个星球能给大家提供什么:
1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。
2、分享ChatGPT的使用方法、最新资讯、商业价值。
3、探讨未来关于ChatGPT的机遇,共同成长。
4、帮助大家解决ChatGPT遇到的问题。
5、提供一整年的售后服务,一起搞副业
星球福利:
1、加入星球4天后,就送ChatGPT独立账号。
2、邀请你加入ChatGPT会员交流群。
3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。
其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !
本星球第一期原价399,目前属于试运营,早鸟价169,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以更高价格加入了。。
早就是优势。建议大家尽早以便宜的价格加入!
![]()
最后,整理了500多套项目,赠送读者。扫码下方二维码,后台回复【赚钱】即可获取。
--END--


