跳到主要内容

应用日志集成 Log4j

🍅 日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。

🏂 Log4j是业界公认的日志组件标准,通过纳速云提供的 Log4j Elasticsearch Appender , 无需代码改造与ES服务部署,轻松实现日志的云端上报与分析。

使用指南

前置条件提示

请确保你的机器IP已在应用白名单内

1. 项目添加依赖

src/pom.xml
    <dependency>
<groupId>com.nasuyun</groupId>
<artifactId>integration-log4j</artifactId>
<version>1.0.3</version>
</dependency>

2. Log4j 配置 Elasticsearch Appender

src/main/resource/log4j2.properties
appender.nes.type=Elasticsearch
appender.nes.name=nes
appender.nes.username=<纳速云应用的用户名称>
appender.nes.password=<纳速云应用的用户密码>

rootLogger.level=info
rootLogger.appenderRef.stdout.ref=nes

至此已完成全部配置

添加测试数据

@Slf4j
@Component
public class GreetingLogger {

@PostConstruct
public void onCreate() {
log.info("info {}", new Date());
log.warn("warn {}", new Date());
try {
throw new IllegalArgumentException("mock exception");
} catch (Exception e) {
log.error("", e);
}
}
}

启动后 logger 会自动发送日志到纳速云 Elasticsearch Serverless

分析日志

创建索引模式

进入 Kibana / Discover,定义索引模式 log4j-* , 选择 @timestamp 作为时间戳字段 创建索引模式

日志检索与分析

  • 输入关键字搜索日志

  • 选择日志级别或主机名称过滤日志

演示项目

懒人系列,拷贝项目替换成你的用户名和密码,3行命令体验。

脚手架
# 下载示例代码
git clone git@github.com:nasuyun/example-springboot-log.git
# 替换成你的用户名及密码
vi src/main/resources/log4j2.properties
# 启动上报日志
mvn clean package && java -jar ./target/springboot-log-0.0.1.jar
# 前往纳速云控制台登录kibana开始日志分析......

更多配置

appender.nes.type=Elasticsearch
appender.nes.name=nes
appender.nes.host=https://router.nasuyun.com:9200
appender.nes.username=<纳速云应用的用户名称>
appender.nes.password=<纳速云应用的用户密码>
appender.nes.connectTimeoutSeconds=30
appender.nes.refreshSeconds=5
appender.nes.rolloverPolicy=day
appender.nes.pipeline=log4j
appender.nes.verifyConnection=true
appender.nes.debug=true
参数说明参数值
username纳速云应用的用户名称必填项
password纳速云应用的用户密码必填项
connectTimeoutSeconds连接超时时间默认值: 30秒
refreshSeconds索引写入刷新时间默认值: 5秒
rolloverPolicy索引翻滚策略,例如 按月翻滚log4j-2023.02day(默认) | month | year | null
pipeline自定义pipeline默认值:log4j
verifyConnection是否校验连接,true:如果云端集群连接未成功则抛出异常。默认值:true
debug是否开启调试,true:将打印错误堆栈详细信息。默认值:false

内网反向代理

当你的应用服务器在内网时,可以配置 appender.nes.host 指向网关(例如Nginx) 反向代理到公网的纳速云

appender.nes.host=http://{your_gateway_address}