全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

函数日志

最近更新时间:2023-02-03 15:16:47

云函数与Klog日志服务集成(默认关闭,可通过控制台新建函数页面开启),云函数会将函数调用的记录以及函数代码中打印的日志全部存储到日志库中,您可以通过控制台云函数提供的调用信息模块查询函数日志,方便调试及定位问题。

注意:日志采集服务只能采集控制台(console)输出的日志,自定义开发时避免日志从文件输出(可通过日志资源文件配置,介绍中给出示例配置文件)。

开发语言 编程语言内嵌的打印日志语句 日志框架打印语句 日志框架实现
JAVA System.out.println() private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Object.class) log.info(“Hello”); slf4j + log4j2、 slf4j + logback

slf4j+logback

非Spring项目
pom.xml依赖

<dependencies>
    // 其他依赖省略
    // 引入logback
    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>1.2.11</version>
       </dependency>
</dependencies>

build.gradle依赖

dependencies {
   // 其他依赖省略
  implementation 'ch.qos.logback:logback-classic:1.2.11'
}

Spring项目
Logback作为sping boot内置日志框架,实际开发中不需要直接引入该依赖。
配置文件(src/main/resource目录下,日志输出设置为console)

logbcak.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <!--控制台输出appender-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--设置输出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <!--设置编码-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--指定基础的日志输出级别-->
    <root level="INFO">
        <!--appender将会添加到这个logger-->
        <appender-ref ref="console"/>
    </root>
</configuration>

slf4j + log4j2

非Spring项目
pom.xml依赖

<dependencies>
          // 其他依赖省略
          // 引入 Log4j2
          <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.17.2</version>
        </dependency>
</dependencies>

build.gradle依赖

dependencies {
  // 其他依赖省略
  implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'
}

Spring项目
pom.xml

<dependencies>
    <dependency>
      <!-- 排除 spring-boot-starter-logging 默认使用logbcak日志框架-->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
      <exclusions>
<exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!--引入 Log4j2-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>

build.gradle
Spring-boot、spring-function、spring-reactive在spring多个框架中引入了spring-boot-starter-logging依赖,可以在项目级别排除。

// 排除 spring-boot-starter-logging
configurations {
    compile.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    implementation.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    testImplementation.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
dependencies {
    // 其他依赖省略
    // 引入 Log4j2
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
}

配置文件(src/main/resource目录下,日志输出设置为console)

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"  monitorInterval="30">
    <!-- 变量配置 -->
    <Properties>
        <!-- 日志输出格式 -->
        <property name="LOG_PATTERN"
                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%t] %highlight{%c{1.}.%M(%L)}: %msg%n"/>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <!-- onMatch="ACCEPT" 只输出 level 级别及级别优先级更高的 Log , onMismatch="DENY" 其他拒绝输出  -->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈