Ctyun Logback Appender概述
Logback是由log4j的创始人设计的一款高性能、灵活配置的Java日志框架。它支持将日志输出到各种目标,如文件、控制台等,并允许通过简单的配置文件自定义日志级别、格式和输出目的地。Logback的特点在于其高效的日志处理能力和强大的配置灵活性,使得开发者能够轻松控制和管理日志,从而更好地监控和调试应用程序。同时,Logback也提供了与多种系统组件的集成支持,为Java应用提供了全面的日志解决方案。
通过Ctyun Logback Appender,您可以将生成的日志信息异步发送到ctyun云日志服务,其样式如下:
__user_agent__ : logback
level : INFO
location : cn.ctyun.example.LogbackAppenderExample.main(LogbackAppenderExample.java:22)
message : info log logback
thread : main
time : 2024-06-06T14:33+0800
__message__ : 2024-06-06 14:33:15,203 INFO [main] LogbackAppenderExample: info log logback其中:
level:日志级别。
location:日志打印语句的代码位置 。
message:日志内容。
throwable:日志异常信息,只有当记录了异常信息,这个字段才会出现。
thread:线程名称。
time:日志打印时间(可以通过 timeFormat 或 timeZone 配置 time 字段呈现的格式和时区)。ts :日志生成时的时间。
__ message __:日志信息。
__ user_agent __: 日志来源
功能优势
日志实时传输:
实时性增强: 日志数据不再依赖传统的磁盘写入,而是实时通过网络通道发送至服务端,确保数据的即时性。
无侵入性集成:
无缝对接: 对于已采用logback作为日志框架的应用,我们提供了简洁的配置方案,无需对应用代码进行大幅度修改,即可实现日志的采集与传输。
高效异步处理:
高并发设计: 系统采用高并发架构,后台异步处理日志发送任务,即使在大量日志数据产生的情况下,也能保证系统的稳定运行和高效处理。
版本支持
logback 1.2.3
ctyun-lts-java-sdk 1.10.0
使用方式
源码使用
打开编写好的logback源码项目,只需简单修改即可完成使用,方便用户自行扩展修改。
1、maven 工程中引入依赖
在jar包目录执行以下命令,把生成的jar包引入本地maven仓库,或者通过其他方式手动导入。logback SDK 是依赖于ctyun-lts-java-sdk 的日志上传功能,所以需要先导入ctyun-lts-java-sdk 1.10.0 jar包。
mvn install:install-file -Dfile=ctyun-lts-java-sdk-1.10.0.jar -DgroupId=cn.ctyun.lts -DartifactId=ctyun-lts-java-sdk-appender -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 目录下的logback-example.xml 为 logback.xml
3、项目中引入CustomerAppender.java
将appender目录整个移动到您当前的项目中,(如果只单独运行logback项目,则不需要移动),然后logback.xml的appender字段中的 class 指向appednder目录下的CustomerAppender.java类所在位置。
<appender name="AppenderCustomer" class="cn.ctyun.appender.CustomerAppender">4、 修改配置文件
以xml配置文件 logback.xml为例(若不存在则在项目根目录创建,一般是src/resources/logback.xml),配置自定义的的appender与 Logger,如果您的目录发送改变,class也需改变,指向CustomerAppende.java 类所在位置。此处需要填入5个必填参数,相关参数获取,详情参考天翼云官网云日志服务-SDK接入概述。
<!-- 此处需要进行用户填写相关配置信息 -->
<endpoint>your endpoint</endpoint>
<accesskey>your accessKey</accesskey>
<secretkey>your secretKey</secretkey>
<logproject>your log project code</logproject>
<logunit>your log unit code</logunit><appender name="AppenderCustomer" class="cn.ctyun.appender.CustomerAppender">
<!--必填项-->
<!-- 此处需要进行用户填写相关配置信息 -->
<endpoint>your endpoint</endpoint>
<accesskey>your accessKey</accesskey>
<secretkey>your secretKey</secretkey>
<logproject>your log project code</logproject>
<logunit>your log unit code</logunit>
<!-- 可选项 详见 '参数说明'-->
<totalsizeinbytes>104857600</totalsizeinbytes>
<maxblockms>0</maxblockms>
<iothreadcount>8</iothreadcount>
<batchsizethresholdinbytes>524288</batchsizethresholdinbytes>
<batchcountthreshold>4096</batchcountthreshold>
<lingerms>2000</lingerms>
<retries>10</retries>
<baseretrybackoffms>100</baseretrybackoffms>
<maxretrybackoffms>50000</maxretrybackoffms>
<!-- 可选项 设置时区 -->
<timeformat>yyyy-MM-dd'T'HH:mmZ</timeformat>
<timezone>Asia/Shanghai</timezone>
<!-- 可选项 通过配置 encoder 的 pattern 自定义 log 的格式 -->
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ssZ} [%thread] %-5level %class{36} %x: %msg%n</pattern>
</encoder>
<!-- 打印INFO,WARN,ERROR级别的日志,过滤掉INFO 级别以下的日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<mdcfields>THREAD_ID,MDC_KEY</mdcfields>
</appender>5、测试功能是否正常
运行example目录中的LogbackAppenderExample.java内的测试用例,查看控制台是否返回success,以及日志控制台是否成功上传日志信息
jar包使用
直接引入ctyun-lts-java-logback-appender-1.6.0.jar包,只需要修改配置文件即可使用
1、maven 工程中引入依赖
在jar包目录执行以下命令,把ctyun-lts-java-logback-appender-1.6.0.jar包引入本地maven仓库,或者通过其他方式手动导入。
mvn install:install-file -Dfile=ctyun-lts-java-logback-appender-1.10.0.jar -DgroupId=cn.ctyun.appender -DartifactId=ctyun-lts-java-logback-appender -Dversion=1.10.0 -Dpackaging=jar在pom.xml 添加以下依赖
<dependency>
<groupid>cn.ctyun.appender</groupid>
<artifactid>ctyun-lts-java-logback-appender</artifactid>
<version>1.10.0</version>
</dependency>2、修改配置文件
以xml型配置文件 logback.xml为例(若不存在则在项目根目录创建,一般是src/resources/logback.xml),配置自定义的的appender与 Logger。此处需要填入5个必填参数,相关参数获取,详情参考天翼云官网云日志服务-SDK接入概述。
<!-- 此处需要进行用户填写相关配置信息 -->
<endpoint>your endpoint</endpoint>
<accesskey>your accessKey</accesskey>
<secretkey>your secretKey</secretkey>
<logproject>your log project code</logproject>
<logunit>your log unit code</logunit> <!--为了防止进程退出时,内存中的数据丢失,请加上此选项-->
<shutdownhook class="ch.qos.logback.core.hook.DelayingShutdownHook">
<!--自定义的 AppenderCustomer 用于采集 info及以上级别的日志-->
<appender name="AppenderCustomer" class="cn.ctyun.appender.CustomerAppender">
<!--必选项-->
<!-- 此处需要进行用户填写相关配置信息 -->
<endpoint>your endpoint</endpoint>
<accesskey>your accessKey</accesskey>
<secretkey>your secretKey</secretkey>
<logproject>your log project code</logproject>
<logunit>your log unit code</logunit>
<!-- 可选项 详见 '参数说明'-->
<totalsizeinbytes>104857600</totalsizeinbytes>
<maxblockms>0</maxblockms>
<iothreadcount>8</iothreadcount>
<batchsizethresholdinbytes>524288</batchsizethresholdinbytes>
<batchcountthreshold>4096</batchcountthreshold>
<lingerms>2000</lingerms>
<retries>10</retries>
<baseretrybackoffms>100</baseretrybackoffms>
<maxretrybackoffms>50000</maxretrybackoffms>
<!-- 可选项 设置时区 -->
<timeformat>yyyy-MM-dd'T'HH:mmZ</timeformat>
<timezone>Asia/Shanghai</timezone>
<!-- 可选项 通过配置 encoder 的 pattern 自定义 log 的格式 -->
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ssZ} [%thread] %-5level %class{36} %x: %msg%n</pattern>
</encoder>
<!-- 打印INFO,WARN,ERROR级别的日志,过滤掉INFO级别以下的日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>3、测试功能是否正常
运行您的测试用例,查看控制台是否有日志发送信息的反馈
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackAppenderExample {
private static final Logger LOGGER = LoggerFactory.getLogger(LogbackAppenderExample.class);
public static void main(String[] args) {
LOGGER.trace("trace log logback"); //level 低于info,不会被上传
LOGGER.debug("debug log logback"); //level 低于info,不会被上传
LOGGER.info("info log logback");
LOGGER.warn("warn log logback");
LOGGER.error("error log logback");
}
}反馈结果
15:56:33.813 [main] INFO org.example.Logback - info log logback
15:56:33.858 [main] WARN org.example.Logback - warn log logback
15:56:33.858 [main] ERROR org.example.Logback - error log logback
response: SUCCESS
response: SUCCESS
response: SUCCESS 详细信息请参考代码内README文件