tencent cloud

文档反馈

使用 Logback Appender 上传日志

最后更新时间:2024-01-20 17:14:28

    简介

    日志服务(Cloud Log Service,CLS)目前已支持使用 Logback Appender 上传日志到 CLS。

    背景信息

    Logback 是 Apache 的一个开源项目。通过使用 Logback,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件,甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等。此外,我们还可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

    功能优势

    日志不落盘:产生数据通过网络发给服务端。
    无需改造:对已使用 Logback 应用,只需简单配置即可采集。
    异步非阻塞:高并发设计,后台异步发送,适合高并发写入。
    资源可控制:可以通过参数控制 producer 用于缓存待发送数据的内存大小,同时还可以配置用于执行数据发送任务的线程数量。
    自动重试: 对可重试的异常,支持配置重试次数。
    优雅关闭: 退出前会将日志全量进行发送。
    感知日志上报结果:"运行过程中产生的异常通过 AddError 输出出来"。

    工程引入和配置

    maven 工程中引入依赖

    <dependency>
    <groupId>com.tencentcloudapi.cls</groupId>
    <artifactId>tencentcloud-cls-logback-appender</artifactId>
    <version>1.0.3</version>
    </dependency>

    修改 logback 配置文件

    <appender name="LoghubAppender" class="com.tencentcloudapi.cls.LoghubAppender">
    <!--必选项-->
    <endpoint><region>.cls.tencentcs.com</endpoint>
    <!--密钥信息-- 前往https://console.tencentcloud.com/cam/capi获取>
    <accessKeyId>${SecretID}</accessKeyId>
    <accessKeySecret>${SecretKey}</accessKeySecret>
    <!--日志主题ID-->
    <topicId>${topicId}</topicId>
    
    <!-- 可选项 详见 '参数说明'-->
    <totalSizeInBytes>104857600</totalSizeInBytes>
    <maxBlockMs>0</maxBlockMs>
    <sendThreadCount>8</sendThreadCount>
    <batchSizeThresholdInBytes>524288</batchSizeThresholdInBytes>
    <batchCountThreshold>4096</batchCountThreshold>
    <lingerMs>2000</lingerMs>
    <retries>10</retries>
    <baseRetryBackoffMs>100</baseRetryBackoffMs>
    <maxRetryBackoffMs>50000</maxRetryBackoffMs>
    
    <!-- 可选项 设置时间格式 -->
    <timeFormat>yyyy-MM-dd'T'HH:mm:ssZ</timeFormat>
    <timeZone>Asia/Shanghai</timeZone>
    <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg</pattern>
    </encoder>
    <mdcFields>THREAD_ID,MDC_KEY</mdcFields>
    </appender>

    参数说明

    参数
    描述
    示例
    totalSizeInBytes
    单个 producer 实例能缓存的日志大小上限,默认为100MB
    totalSizeInBytes=104857600
    maxBlockMs
    如果 producer 可用空间不足,调用者在 send 方法上的最大阻塞时间,默认为60秒。为了不阻塞打印日志的线程,强烈建议将该值设置成0
    maxBlockMs=0
    sendThreadCount
    执行日志发送任务的线程池大小,默认为可用处理器个数
    sendThreadCount=8
    batchSizeThresholdInBytes
    当一个 ProducerBatch 中缓存的日志大小大于等于 batchSizeThresholdInBytes 时,该 batch 将被发送,默认为512 KB,最大可设置成5MB
    batchSizeThresholdInBytes=524288
    batchCountThreshold
    当一个 ProducerBatch 中缓存的日志条数大于等于 batchCountThreshold 时,该 batch 将被发送,默认为4096,最大可设置成40960
    batchCountThreshold=4096
    lingerMs
    一个 ProducerBatch 从创建到可发送的逗留时间,默认为2秒,最小可设置成100毫秒
    lingerMs=2000
    retries
    如果某个 ProducerBatch 首次发送失败,能够对其重试的次数,默认为10次
    如果 retries 小于等于0,该 ProducerBatch 首次发送失败后将直接进入失败队列
    retries=10
    maxReservedAttempts
    该参数越大能让您追溯更多的信息,但同时也会消耗更多的内存
    maxReservedAttempts=11
    baseRetryBackoffMs
    首次重试的退避时间,默认为100毫秒。Producer 采用指数退避算法,第 N 次重试的计划等待时间为 baseRetryBackoffMs * 2^(N-1)
    baseRetryBackoffMs=100
    maxRetryBackoffMs
    重试的最大退避时间,默认为50秒
    maxRetryBackoffMs=50000
    timeFormat
    设置时间格式
    精确到秒:yyyy-MM-dd'T'HH:mm:ssZ 精确到毫秒:yyyy-MM-dd'T'HH:mm:ss.SSSZ
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持