Ctyun Log4j2 Appender概述
Log4j2 是 log4j 的升级版本。它支持将日志输出到各种目标,如文件、控制台等,并允许通过简单的配置文件自定义日志级别、格式和输出目的地。
通过Ctyun Log4j Appender,您可以将生成的日志信息异步发送到ctyun云日志服务,其样式如下:
__user_agent__ : log4j2
level : INFO
location : cn.ctyun.example.Log4j2AppenderExample.main(Log4j2AppenderExample.java:10)
message : log4j2 info log
thread : main
time : 2024-06-06T18:03:06+0800
__message__ : 2024-06-06T18:03:06+0800 [main] INFO cn.ctyun.example.Log4j2AppenderExample: log4j2 info log其中:
level:日志级别。
location:日志打印语句的代码位置 。
message:日志内容。
throwable:日志异常信息,只有当记录了异常信息,这个字段才会出现。
thread:线程名称。
time:日志打印时间(可以通过 timeFormat 或 timeZone 配置 time 字段呈现的格式和时区)。
ts:日志生成时的时间。
message :日志信息。
user_agent: 日志来源
功能优势
日志实时传输:
实时性增强: 日志数据不再依赖传统的磁盘写入,而是实时通过网络通道发送至服务端,确保数据的即时性。
无侵入性集成:
无缝对接: 对于已采用log4j2作为日志框架的应用,我们提供了简洁的配置方案,无需对应用代码进行大幅度修改,即可实现日志的采集与传输。
高效异步处理:
高并发设计: 系统采用高并发架构,后台异步处理日志发送任务,即使在大量日志数据产生的情况下,也能保证系统的稳定运行和高效处理。
版本支持
ctyun-lts-java-sdk 1.10.0
使用步骤
源码使用
打开编写好的log4j2源码项目,只需简单修改即可完成使用,方便用户自行扩展修改。log4j2SDK 是依赖于ctyun-lts-java-sdk 的日志上传功能,所以需要先导入ctyun-lts-java-sdk 1.10.0 jar包。
1、maven 工程中引入依赖
在jar包目录执行以下命令,把ctyun-lts-java-sdk 1.6.0 jar包引入本地maven仓库,或者通过其他方式手动导入。
mvn install:install-file -Dfile=ctyun-lts-java-sdk-1.10.0.jar -DgroupId=cn.ctyun.lts -DartifactId=ctyun-lts-java-sdk -Dversion=1.10.0 -Dpackaging=jar在pom.xml 添加以下依赖
<dependency>
<groupid>cn.ctyun.lts</groupid>
<artifactid>ctyun-lts-java-sdk</artifactid>
<version>1.10.0</version>
</dependency>2、重命名resources 目录下的log4j2-example.xml 为 log4j2.xml
3、项目中引入CustomerAppender.java
将appender目录整个移动到您当前的项目中,(如果只单独运行log4j2项目,则不需要移动)。
4、修改配置文件
以xml配置文件 log4j2.xml为例(若不存在则在项目根目录创建,一般是src/resources/log4j2.xml),配置自定义的的appender与 Logger,例如:level="INFO",则会接受INFO,WARN,ERROR 级别的日志,DEBUG,TRACE不会被接收打印。
此处需要填入5个必填参数,相关参数获取,详情参考天翼云官网云日志服务-SDK接入概述。
<<CustomerAppender name="AppenderCustomer"
endpoint="lts log service endpoint"
accessKey="your accessKey"
secretKey="your secretKey"
logProject="your log project code"
logUnit="your log unit code"
......
```
```
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" >
<Appenders>
<CustomerAppender name="AppenderCustomer"
endpoint="lts log service endpoint"
accessKey="your accessKey"
secretKey="your secretKey"
logProject="your log project code"
logUnit="your log unit code"
totalSizeInBytes="104857600"
maxBlockMs="0"
ioThreadCount="8"
batchSizeThresholdInBytes="524288"
batchCountThreshold="4096"
lingerMs="2000"
retries="10"
baseRetryBackoffMs="100"
maxRetryBackoffMs="100"
timeFormat="yyyy-MM-dd'T'HH:mm:ssZ"
timeZone="UTC"
ignoreExceptions="true">
<PatternLayout
pattern="%d{yyyy-MM-dd'T'HH:mm:ssZ} [%t] %-5level %class{36}: %msg%xEx"/>
</CustomerAppender>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="AppenderCustomer" level="INFO"/>
</Root>
</Loggers>
</Configuration>5、测试功能是否正常
运行example目录中的Log4j2AppenderExample.java内的测试用例,查看发送响应是否返回success,以及日志控制台是否成功上传日志信息。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4j2AppenderExample {
private static final Logger LOGGER = LogManager.getLogger(Log4j2AppenderExample.class);
public static void main(String[] args) throws InterruptedException {
LOGGER.trace("log4j2 trace log"); //不会被上传, level低于xml中的INFO
LOGGER.debug("log4j2 debug log"); //不会被上传, level低于xml中的INFO
LOGGER.info("log4j2 info log");
LOGGER.warn("log4j2 warn log");
LOGGER.error("log4j2 error log",new RuntimeException("error"));
}
}反馈结果
18:03:06.055 [main] INFO cn.ctyun.example.Log4j2AppenderExample : log4j2 info log
18:03:06.093 [main] WARN cn.ctyun.example.Log4j2AppenderExample : log4j2 warn log
18:03:06.094 [main] ERROR cn.ctyun.example.Log4j2AppenderExample : log4j2 error log
java.lang.RuntimeException: error
at cn.ctyun.example.Log4j2AppenderExample.main(Log4j2AppenderExample.java:12) [classes/:?]
response: SUCCESS
response: SUCCESS
response: SUCCESSjar包使用
直接引入ctyun-lts-java-log4j2-appender-1.10.0.jar包,只需要修改配置文件即可使用
在jar包目录执行以下命令,把ctyun-lts-java-log4j2-appender-1.10.0.jar包引入本地maven仓库,或者通过其他方式手动导入。
mvn install:install-file -Dfile=ctyun-lts-java-log4j2-appender-1.10.0.jar -DgroupId=cn.ctyun.appender -DartifactId=ctyun-lts-java-log4j2-appender -Dversion=1.10.0 -Dpackaging=jar在pom.xml 添加以下依赖
<dependency>
<groupid>cn.ctyun.appender</groupid>
<artifactid>ctyun-lts-java-log4j2-appender</artifactid>
<version>1.10.0</version>
</dependency>实施细节请参考代码内README文档