除过直接在作业探查页面查看历史作业实例日志外,您还可以将历史作业实例日志配置输出至外部存储(OSS或SLS)后进行查看。本文为您介绍如何配置历史作业实例日志输出至OSS或SLS。

背景信息

在作业实例在运行状态下,您可以在作业探查页面或Flink UI页面查看运行作业实例的日志,详情请参见查看启动和运行日志

在配置历史作业实例日志输出至OSS或SLS后,您就可以在OSS或SLS上查看历史作业实例日志,详情请参见查看历史作业实例日志

注意事项

配置日志输出至OSS或SLS后,需要重启作业。

配置单个作业(新建作业)日志输出到OSS

  1. 进入作业开发界面,配置作业信息。
    1. 登录实时计算控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 在左侧导航栏,单击作业开发
    4. 单击新建
    5. 填写作业信息后,在作业开发页面,填写SQL代码或者上传JAR包。
  2. 配置作业日志。
    1. 单击右侧高级配置页签。
    2. 日志配置区域,Logging Profile选择为Custom Template
    3. 将以下文本粘贴到输入框中,并修改以下参数为您OSS Bucket信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender> 
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property>  
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property> 
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property> 
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      参数 说明
      YOUR-BUCKET-NAME 替换成您OSS Bucket名称。
      YOUR-ENDPOINT 替换成您OSS的Endpoint,详情请参见访问域名和数据中心

      Endpoint为ECS的VPC网络访问(内网) 所在行的Endpoint(地域节点)信息。

      YOUR-OSS-ACCESSKEYID 替换成您配置OSS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      YOUR-OSS-ACCESSKEYSECRET 替换成您配置OSS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
  3. 启动作业。
    1. 在作业编辑页面右上角,单击验证
      请编写完整的SQL逻辑后再进行验证,否则验证会失败。
    2. 单击上线
    3. 在左侧导航栏上,单击作业运维
    4. 单击目标作业名称操作列的启动
      您可以在OSS控制台查看作业日志,详情请参见在OSS上查看

配置单个作业(已有作业)日志输出到OSS

  1. 进入作业运维界面。
    1. 登录实时计算管理控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 在左侧导航栏上,单击作业运维
  2. 配置作业日志信息。
    1. 单击目标作业名称。
    2. 在作业详情页面右上角,单击编辑
    3. 单击右侧高级配置页签。
    4. 日志配置区域,Logging Profile选择为Custom Template
    5. 将以下文本粘贴到输入框中,并修改以下参数为您OSS Bucket信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender> 
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property>  
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property> 
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property> 
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      参数 说明
      YOUR-BUCKET-NAME 替换成您OSS Bucket名称。
      YOUR-ENDPOINT 替换成您OSS的Endpoint,详情请参见访问域名和数据中心

      Endpoint为ECS的VPC网络访问(内网) 所在行的Endpoint(地域节点)信息。

      YOUR-OSS-ACCESSKEYID 替换成您配置OSS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      YOUR-OSS-ACCESSKEYSECRET 替换成您配置OSS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
    6. 单击保存
  3. 在左侧导航栏上,单击作业运维
  4. 单击目标作业名称操作列的启动
    您可以在OSS控制台查看作业日志,详情请参见在OSS上查看

配置工作空间下所有作业日志输出到OSS

您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到OSS。

  1. 登录实时计算管理控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 配置作业日志。
    1. 在左侧导航栏,选择系统管理 > 作业模板
    2. 日志配置区域,Logging Profile选择为Custom Template
    3. 将以下文本粘贴到输入框中,并修改以下参数为您OSS Bucket信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender> 
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property>  
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="20 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="4"/> 
            </Appender>  
            <Appender name="OSS" type="OSS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property>
              <Property name="endpoint">https://YOUR-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-OSS-ACCESSKEYID</Property>
              <Property name="secretAccessKey">YOUR-OSS-ACCESSKEYSECRET</Property>
              <Property name="flushIntervalSeconds">10</Property>  
              <Property name="flushIntervalEventCount">100</Property>  
              <Property name="rollingBytes">10485760</Property> 
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property> 
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="OSS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      参数 说明
      YOUR-BUCKET-NAME 替换成您OSS Bucket名称。
      YOUR-ENDPOINT 替换成您OSS的Endpoint,详情请参见访问域名和数据中心

      Endpoint为ECS的VPC网络访问(内网) 所在行的Endpoint(地域节点)信息。

      YOUR-OSS-ACCESSKEYID 替换成您配置OSS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      YOUR-OSS-ACCESSKEYSECRET 替换成您配置OSS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的OSS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的OSS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
    4. 单击保存
      说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到OSS。您可以在OSS控制台查看作业日志,详情请参见在OSS上查看

配置单个作业(新建作业)日志输出到SLS

  1. 进入作业开发界面,配置作业信息。
    1. 登录实时计算控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 在左侧导航栏,单击作业开发
    4. 单击新建
    5. 填写作业信息后,在作业开发页面,填写SQL代码或者上传JAR包。
  2. 配置作业日志。
    1. 单击右侧高级配置页签。
    2. 日志配置区域,Logging Profile选择为Custom Template
    3. 将以下文本粘贴到自定义模板的输入框中,并修改以下参数为您SLS信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
              <Property name="deploymentName">{{ deploymentName }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ sessionClusterName }}:{{ sessionClusterId }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      文件夹 说明
      YOUR-SLS-PROJECT 替换成您SLS的Project名称。
      YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
      YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
      YOUR-SLS-ACCESSKEYID 替换成您配置SLS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      YOUR-SLS-ACCESSKEYSECRET 替换成您配置SLS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
      说明
      • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
      • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
  3. 启动作业。
    1. 在作业编辑页面右上角,单击验证
    2. 单击上线
    3. 在左侧导航栏上,单击作业运维
    4. 单击目标作业名称操作列的启动
      您可以在SLS控制台查看作业日志,详情请参见在SLS上查看

配置单个作业(已有作业)日志输出到SLS

  1. 进入作业运维界面。
    1. 登录实时计算管理控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 在左侧导航栏上,单击作业运维
  2. 配置作业日志。
    1. 单击目标作业名称。
    2. 在作业详情页面右上角,单击编辑
    3. 单击高级配置
    4. 日志配置区域,Logging Profile选择为Custom Template
    5. 将以下文本粘贴到自定义模板的输入框中,并修改以下参数为您SLS信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
              <Property name="deploymentName">{{ deploymentName }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ sessionClusterName }}:{{ sessionClusterId }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      文件夹 说明
      YOUR-SLS-PROJECT 替换成您SLS的Project名称。
      YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
      YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
      YOUR-SLS-ACCESSKEYID 替换成您配置SLS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      YOUR-SLS-ACCESSKEYSECRET 替换成您配置SLS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
      说明
      • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
      • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
    6. 单击保存
  3. 在左侧导航栏上,单击作业运维
  4. 单击目标作业名称操作列的启动
    您可以在SLS控制台查看作业日志,详情请参见在SLS上查看

配置工作空间下所有作业日志输出到SLS

您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到SLS。

  1. 登录实时计算控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧选择导航栏,选择系统管理 > 作业模板
  4. 配置作业日志。
    1. 日志配置区域,Logging Profile选择为Custom Template
    2. 将以下文本粘贴到自定义模板的输入框中,并修改以下参数为您SLS信息。
      • Per-Job模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property>
              <Property name="deploymentName">{{ deploymentName }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      • Session模式
        <?xml version="1.0" encoding="UTF-8"?>
        <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
        strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
          <Appenders> 
            <Appender name="StdOut" type="Console"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> 
            </Appender>  
            <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
              <Policies> 
                <SizeBasedTriggeringPolicy size="5 MB"/> 
              </Policies>  
              <DefaultRolloverStrategy max="1"/> 
            </Appender>  
            <Appender name="SLS" type="SLS">
              <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/>  
        
              <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
              <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
              <Property name="project">YOUR-SLS-PROJECT</Property>  
              <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
              <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
              <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
              <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
              <Property name="topic">{{ namespace }}:{{ sessionClusterName }}:{{ sessionClusterId }}</Property>
              <Property name="flushIntervalSeconds">10</Property>
              <Property name="flushIntervalEventCount">100</Property>
              <Property name="deploymentId">{{ sessionClusterName }}</Property>
              <Property name="jobId">{{ sessionClusterId }}</Property>
            </Appender>
              <Appender name="StdOutErrConsoleAppender" type="Console">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
              </Appender>
              <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
              <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i">
                  <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/>
                  <Policies>
                  <SizeBasedTriggeringPolicy size="1 GB"/>
                  </Policies>
                  <DefaultRolloverStrategy max="2"/>
              </Appender>
          </Appenders>  
          <Loggers> 
            <Logger level="INFO" name="org.apache.hadoop"/>  
            <Logger level="INFO" name="org.apache.kafka"/>  
            <Logger level="INFO" name="org.apache.zookeeper"/>  
            <Logger level="INFO" name="akka"/>  
            <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
            <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
            <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>
            <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false">
                <AppenderRef ref="StdOutFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false">
                <AppenderRef ref="StdErrFileAppender"/>
                <AppenderRef ref="StdOutErrConsoleAppender"/>
            </Logger>
            {%- for name, level in userConfiguredLoggers -%} 
              <Logger level="{{ level }}" name="{{ name }}"/> 
            {%- endfor -%}
            <Root level="{{ rootLoggerLogLevel }}"> 
              <AppenderRef ref="StdOut"/>
              <AppenderRef ref="RollingFile"/>  
              <AppenderRef ref="SLS"/> 
            </Root>
          </Loggers> 
        </Configuration>
      文件夹 说明
      YOUR-SLS-PROJECT 替换成您SLS的Project名称。
      YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
      YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
      YOUR-SLS-ACCESSKEYID 替换成您配置SLS服务账号的AccessKey ID,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      YOUR-SLS-ACCESSKEYSECRET 替换成您配置SLS服务账号的AccessKey Secret,获取方法请参见获取AccessKey
      说明 如果您配置与全托管集群同账号下的SLS,可以不填写该参数,不填写需要删除该参数。如果您配置与全托管集群不同账号下的SLS,该参数必填。
      sessionClusterName Session集群的名称。
      sessionClusterId Session集群的ID。
      说明
      • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
      • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
  5. 单击保存
    说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到您配置的SLS项目下的Logstore。您可以在SLS控制台查看作业日志,详情请参见在SLS上查看