Log4j、Log4j2或logback上报配置

常用于Java语言的应用系统。


第一步:下载依赖并安装


1.下载SDK并发布到私有仓库

根据不同的log框架选择不同的sdk版本。

📎alipay-sdk-java-openmonitor-log4j2-1.0.0.jar

📎alipay-sdk-java-openmonitor-log4j-1.0.0.jar

📎alipay-sdk-java-openmonitor-logback-1.0.0.jar

mvn deploy:deploy-file -DgroupId=com.alipay.sdk -DartifactId=alipay-sdk-java-openmonitor-log4j2 -Dversion=1.0.0 -Dpackaging=jar -Dfile=alipay-sdk-java-openmonitor-log4j2-1.0.0.jar -Durl=http://mvn.dev.alipay.net/artifactory/content/repositories/Alipay-Releases/ -DrepositoryId=releases
--------------------- 
DartifactId如果下载的sdk是log4j2则是alipay-sdk-java-openmonitor-log4j2,log4j是alipay-sdk-java-openmonitor-log4j
Dfile表示需要上传的jar包的绝对路径。 
Durl私服上仓库的位置。(仓库type为hosted的地址)
DrepositoryId服务器的表示id。 


2.添加SDK到项目pom.xml中

<!-- log4j2 cloudMonitor sdk -->
<dependency>
  <groupId>com.alipay.sdk</groupId>
  <artifactId>alipay-sdk-java-openmonitor-log4j2</artifactId>
  <version>1.0.0</version>
</dependency>

<!-- log4j cloudMonitor sdk -->
<dependency>
  <groupId>com.alipay.sdk</groupId>
  <artifactId>alipay-sdk-java-openmonitor-log4j</artifactId>
  <version>1.0.0</version>
</dependency>

<!-- logback cloudMonitor sdk -->
<dependency>
  <groupId>com.alipay.sdk</groupId>
  <artifactId>alipay-sdk-java-openmonitor-logback</artifactId>
  <version>1.0.0</version>
</dependency>


3.云监控Client初始化

在应用任何位置通过以下代码初始化云监控client.

  • 在消息订阅时选择以http的方式上报数据.
// 获取以http上报方式cient
AlipayClient alipayClient = AlipayClientBuilder.buildAlipayClient(APP_ID,APP_PRIVATE_KEY,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
// 用alipayClient初始化云监控客户端
// 初始化之后,check一下是否初始化成功,返回true表示成功,fasle表示失败,
// 失败的可以原因是未订阅云监控的方法或者参数不对导致的.
CloudMonitor.initialize(alipayClient);


配置参数

示例值解释

获取方式/示例值

APPID

APPID即创建应用后生成

获取见创建应用

APP_PRIVATE_KEY

开发者私钥,由开发者自己生成

获取详见配置应用环境

CHARSET

编码集,支持GBK/UTF-8

开发者根据实际工程编码配置

ALIPAY_PUBLIC_KEY

支付宝公钥,由支付宝生成

获取详见配置应用环境

SIGN_TYPE商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2RSA2


TIPS:ISV/开发者可以通过“第三方应用授权”得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力;具体方法请参考第三方应用授权


第二步:日志数据上报

云监控支持以下多种日志上报方式,根据自己项目的实际情况选择其中一种进行日志上报。

  • 通过log4j2上报日志数据(推荐用这种模式上报)

改动点:

1.报需要上报日志文件的appender标签替换成云监控的标签<CloudMonitorRollingFile>

2.在标准中增加2个属性,分别为appName(当前应用的名称)和namespace(云监控自定义监控监控项的名称)

<CloudMonitorRollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/biz.log" 
        filePattern="${sys:user.home}/logs/biz-%d{yyyy-MM-dd}-%i.log" appName="应用名称" namespace="云监控自定义监控监控项的名称">
  <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
  <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
  <Policies>
    <TimeBasedTriggeringPolicy/>
    <SizeBasedTriggeringPolicy size="100 MB"/>
  </Policies>
</CloudMonitorRollingFile>


  • 通过log4j上报日志数据

把需要上报日志的appender替换成云监控sdk的com.alipay.openmonitor.log4j.CloudMonitorDailyRollingFileAppender,并设置appName和namespace两个参数即可.

<appender name="xxx" class="com.alipay.openmonitor.log4j.CloudMonitorDailyRollingFileAppender">
    <param name="appName" value="应用名称"/>
    <param name="namespace" value="云监控自定义监控监控项的名称"/>
    <param name="file" value="xxx.log"/>
    <param name="append" value="true"/>
    <param name="encoding" value="UTF-8"/>
    <param name="threshold" value="error"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern"
        value="%d{yyyy-MM-dd HH:mm:ss}  [%t] %-5p %c{2} - %m%n"/>
    </layout>
</appender>
  • 通过logback上报日志数据

把需要上报日志的appender替换成云监控sdk的com.alipay.openmonitor.logback.CloudMonitorRollingFileAppender,并设置appName和namespace两个参数即可.

<appender name="errorFile" class="com.alipay.openmonitor.logback.CloudMonitorRollingFileAppender">
  <appName>应用名称</appName>
  <namespace>云监控自定义监控监控项的名称</namespace>
  <!-- ThresholdFilter:临界值过滤器,过滤掉 TRACE 和 DEBUG 级别的日志 -->
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>INFO</level>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>/Users/aliyangx/logs/error-%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory><!--保存最近30天的日志-->
  </rollingPolicy>
  <encoder>
    <charset>UTF-8</charset>
    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} : %msg%n</pattern>
  </encoder>
</appender>
  • 通过云监控Client上报数据

1.指标维度

// 构建指标对象
CustomMetric cm = CustomMetricBuilder.create()
    .setMetricName("test")
    .setValue(1)
    .setTimestamp(System.currentTimeMillis())
    .appendDimension("a", "a")
    .appendDimension("b", "b").build();
// 上报数据
CloudMonitor.putCustomMetric("namespace", cm);


请求参数特别说明

参数参数说明
namespace命名空间,商户与支付宝进行监控共建场景使用,命令空间需要先在云监控自定义监控页面配置录入。
metric_name监控共建自定义指标名称
dimension由key,value组成的维度
value监控共建自定义指标值

timestamp

监控共建自定义指标数据产生的时间戳


2.文本日志

/**
 * namespace 对应云监控中的监控项名称
 * log 具体要上报的日志
 */
CloudMonitor.report(namespace, log);


请求参数特别说明

参数参数说明
namespace对应云监控中的监控项名称
log具体要上报的日志


系统error日志监控

如果需要对系统的error日志进行监控,只需按照上面的操作,把错误日志appender配置中的namespace属性值设置为"error"即可.云监控通过对error日志进行分析,会自动识别出那个应用的,那台服务器的那个类出现异常,当出现异常时,云监控会给相关报警联系人发送预警信息.

onlineServer