schedulerx 日志服务
官网:https://help.aliyun.com/document_detail/405090.html
接入日志服务
控制台:创建应用,开通日志服务(日志最多保留2周,超过2周会被清理)
客户端:需为1.4.2以上版本
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.5.0.2</version>
</dependency>
***********
日志配置
log4j2:log4j2.xml添加名为SchedulerxLog4j2Appender的appender
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n" />
</Console>
<!-- 输出到schedulerx -->
<SchedulerxLog4j2Appender name="schedulerxLog"
timeFormat="yyyy-MM-dd'T'HH:mmZ"
timeZone="UTC"
ignoreExceptions="true">
<PatternLayout pattern="%d %-5level [%thread] %logger{0}: %msg"/>
</SchedulerxLog4j2Appender>
</Appenders>
<Loggers>
<!-- 输出到控制台,日志级别为info -->
<Root level="info">
<AppenderRef ref="Console" />
</Root>
<!-- 输出到schedulerx,日志级别为info -->
<Logger name="schedulerx" level="info" additivity="false">
<AppenderRef ref="schedulerxLog" />
</Logger>
</Loggers>
</Configuration>
log4j:log4j.properties添加appender
log4j.appender.schedulerxLog=com.alibaba.schedulerx.worker.log.appender.SchedulerxLog4jAppender
logback:logback.xml添加appender
<appender name="schedulerxLog" class="com.alibaba.schedulerx.worker.log.appender.SchedulerxLogbackAppender">
<timeFormat>yyyy-MM-dd'T'HH:mmZ</timeFormat>
<timeZone>UTC</timeZone>
</appender>
使用示例
application.yml
spring:
schedulerx2:
aliyunAccessKey: ***
aliyunSecretKey: ***
regionId: public
endpoint: acm.aliyun.com
namespaceName: lihu-test
namespace: ***
appName: lihu-job
groupId: lihu-group
appKey: OOs+XPhRsAa1Ia6+Op+NAw==
jobs:
customJob:
jobModel: standalone
className: com.example.demo.job.CustomJob
cron: "0 */1 * * * ?"
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<property name="console.pattern" value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<property name="file.pattern" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${console.pattern}</pattern>
</encoder>
</appender>
<!-- 输出到schedulerx -->
<appender name="schedulerxLog" class="com.alibaba.schedulerx.worker.log.appender.SchedulerxLogbackAppender">
<timeFormat>yyyy-MM-dd HH:mm:ss:SSS</timeFormat>
<timeZone>UTC</timeZone>
</appender>
<!-- 日志级别为info -->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="schedulerxLog"/>
</root>
</configuration>
DataConfig
@Configuration
public class DataConfig {
@Bean
public JobSyncService initJobSyncService(){
return new JobSyncService();
}
}
CustomJob
public class CustomJob extends JavaProcessor {
private Logger logger = LoggerFactory.getLogger(this.getClass().getName());
@Override
public ProcessResult process(JobContext context) throws Exception {
System.out.println("job:"+ LocalDateTime.now());
logger.info("jobName:{},任务时间:{}",context.getJobName(),LocalDateTime.now());
return new ProcessResult(true);
}
}
使用测试
控制台:应用开启日志服务
启动应用,控制台查看应用接入
控制台查看应用日志
控制台日志查询
应用控制台日志
2022-04-19 12:22:53.294 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=14ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=14ms
2022-04-19 12:22:59.981 INFO 1594 --- [er-instance-302] c.a.s.worker.actor.JobInstanceActor : handleSubmitJobInstance, jobInstanceId=998854056
handleSubmitJobInstance, jobInstanceId=998854056
2022-04-19 12:22:59.981 INFO 1594 --- [er-instance-302] c.a.s.worker.master.TaskMasterFactory : create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
2022-04-19 12:22:59.982 WARN 1594 --- [er-instance-302] c.a.s.w.util.JavaProcessorProfileUtil : initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
2022-04-19 12:22:59.983 INFO 1594 --- [394_998854056-0] c.a.s.worker.container.ThreadContainer : reportTaskStatus instanceId=717394_998854056_0 submitResult=true, processResult=ProcessResult [status=RUNNING, result=null]
2022-04-19 12:22:59.983 WARN 1594 --- [394_998854056-0] c.a.s.w.util.JavaProcessorProfileUtil : initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
job:2022-04-19T12:22:59.983
# logger.info输出
2022-04-19 12:22:59.983 INFO 1594 --- [394_998854056-0] com.example.demo.job.CustomJob : jobName:customJob,任务时间:2022-04-19T12:22:59.983
2022-04-19 12:22:59.983 INFO 1594 --- [394_998854056-0] c.a.s.worker.container.ThreadContainer : reportTaskStatus instanceId=717394_998854056_0 submitResult=true, processResult=ProcessResult [status=SUCCESS, result=null]
2022-04-19 12:23:00.987 INFO 1594 --- [ead-998854056-1] c.a.s.w.batch.ContainerStatusReqHandler : jobInstanceId=998854056 batch report status=3 to task master, size:2
jobInstanceId=998854056 batch report status=3 to task master, size:2
2022-04-19 12:23:00.988 INFO 1594 --- [atcher-task-306] c.a.schedulerx.worker.actor.TaskActor : jobInstanceId=998854056, batch receive task status reqs, size:2
jobInstanceId=998854056, batch receive task status reqs, size:2
2022-04-19 12:23:00.989 INFO 1594 --- [atcher-task-306] .w.m.h.CommonUpdateInstanceStatusHandler : report jobInstance=998854056, status=SUCCESS to AtLeastDeliveryRoutingActor
report jobInstance=998854056, status=SUCCESS to AtLeastDeliveryRoutingActor
2022-04-19 12:23:00.990 INFO 1594 --- [r-container-308] c.a.s.worker.actor.ContainerActor : handleDestroyContainerPool from cycleId=998854056_0, handler serialNum=0.
handleDestroyContainerPool from cycleId=998854056_0, handler serialNum=0.
2022-04-19 12:23:00.990 INFO 1594 --- [lt-dispatcher-5] c.a.s.w.ha.AtLeastOnceDeliveryActor : report jobInstance=998854056, status=4 to server=ActorSelection[Anchor(akka.tcp://server@112.124.156.1:8080/), Path(/user/instance_status_router)]
report jobInstance=998854056, status=4 to server=ActorSelection[Anchor(akka.tcp://server@112.124.156.1:8080/), Path(/user/instance_status_router)]
2022-04-19 12:23:00.991 INFO 1594 --- [atcher-task-306] .w.m.h.CommonUpdateInstanceStatusHandler : uniqueId: 717394_998854056 is finished, remove from MasterPool.
uniqueId: 717394_998854056 is finished, remove from MasterPool.
2022-04-19 12:23:03.296 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=16ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=16ms
2022-04-19 12:23:13.293 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
2022-04-19 12:23:23.382 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=104ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=104ms
2022-04-19 12:23:33.291 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
2022-04-19 12:23:38.285 INFO 1594 --- [sCollectorTimer] timer : enableCgroup=false, cpuUsage=2.79599609375, jvmHeapUsage=0.012633891787970338, diskUsage=0.2819199583894363
enableCgroup=false, cpuUsage=2.79599609375, jvmHeapUsage=0.012633891787970338, diskUsage=0.2819199583894363
2022-04-19 12:23:43.295 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=15ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=15ms
2022-04-19 12:23:53.291 INFO 1594 --- [eartbeat-thread] heartbeat : heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
heartbeat groupId=lihu-group to akka.tcp://server@112.124.156.1:8080, cost=13ms
2022-04-19 12:23:59.999 INFO 1594 --- [er-instance-309] c.a.s.worker.actor.JobInstanceActor : handleSubmitJobInstance, jobInstanceId=998854569
handleSubmitJobInstance, jobInstanceId=998854569
2022-04-19 12:24:00.000 INFO 1594 --- [er-instance-309] c.a.s.worker.master.TaskMasterFactory : create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
2022-04-19 12:24:00.001 WARN 1594 --- [er-instance-309] c.a.s.w.util.JavaProcessorProfileUtil : initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
2022-04-19 12:24:00.002 INFO 1594 --- [394_998854569-0] c.a.s.worker.container.ThreadContainer : reportTaskStatus instanceId=717394_998854569_0 submitResult=true, processResult=ProcessResult [status=RUNNING, result=null]
2022-04-19 12:24:00.002 WARN 1594 --- [394_998854569-0] c.a.s.w.util.JavaProcessorProfileUtil : initSpringJobProcessor field not found, jobProcessor:com.example.demo.job.CustomJob, fieldName:logger
# System.out输出
job:2022-04-19T12:24:00.003