日志配置——基础知识

日志——level

DEBUG:log.debug放的的数据信息,通常是程序调试的细节
WARN:log.warn放入的数据信息,通常是警告性的一些数据
INFO:log.info放入的数据信息,通常是实体数据的展示
ERROR:log.error放入的数据信息,通常是异常后对参数的展示
FATAL:log.fatal放的数据信息,通常是

日志——appender

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方,比如kafka)

日志——环境变量

%d表示日期,
%thread: 表示线程名
%level:日志级别
%msg:日志消息
%logger: Java类名(含包名,这里设定了36位,若超过36位,包名会精简为类似a.b.c.JavaBean)
%line: Java类的行号

日志配置——完整配置

新建——以下两个文件

springboot的mvc内置日志插件,所以导入了spirngboot的web包后自动带有日志功能

在这里插入图片描述

配置(1)——application.yml

logging:
  config: classpath:logback.xml
  file:
    path: /logs/springcloud-gateway

配置(2)——logback.xml

注意,之所以测试环境为了排查问题方便,所以我们直接配置全部等级的whole输出以便于将堆栈信息数据到日志中

<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<contextName>logback</contextName>
    <!--
       (1)加入环境变量
       (1.1)log.project:spring当前的应用名(引用spirng配置文件的变量)
       (1.2)log.path:日志地址(写死静态值)
       (1.3)ERROR_FILE_PATH:错误日志输出地址
       (1.4)WHOLE_FILE_PATH:全部日志输出地址
       (1.5)LOG_ENCODER_PATTERN:文件日志打印格式
       (1.5)CONSOLE_LOG_PATTERN:控制台日志打印格式
     -->
    <springProperty scope="context" name="log.project" source="spring.application.name"/>
    <springProperty scope="context" name="log.path" source="logging.file.path"/>
    <property name="ERROR_FILE_PATH" value="${log.path}/${log.project}.error.log"/>
    <property name="WHOLE_FILE_PATH"  value="${log.path}/${log.project}.WHOLE_FILE.log" />
    <property name="LOG_ENCODER_PATTERN" value="
            %d{yyyy-MM-dd HH:mm:ss.SSS} ||| [ %-5level] |||
            ${hostName} ||| [%thread] ||| [%X{requestId}] ||| %logger{36} |||- %msg%n"
    ></property>
    <property name="CONSOLE_LOG_PATTERN" value="${
        CONSOLE_LOG_PATTERN:-
        %clr(%d{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}
    }"/>
     <!-- 彩色日志依赖的渲染类 -->
    <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" />
    />

    <!--
        (2)日志插件罗列
     -->

	<!--
	   (2.1)控制台日志插件
	-->
	<appender name="console"
			  class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
		</encoder>
	</appender>
    <!--
	   (2.2)文件插件————输出所有等级的日志(测试环境)
	-->
    <appender name="WHOLE_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--(2.2.1)日志文件位置配置-->
        <file>${WHOLE_FILE_PATH}</file>
        <!--(2.2.2)日志文件输出格式配置-->
        <encoder>
            <pattern>${LOG_ENCODER_PATTERN}</pattern>
        </encoder>
        <!--(2.2.3)日志文件滚动策略配置-->
        <!-- 滚动策略 -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/${log.project}.WHOLE_FILE.logback.log.%d{yyyy-MM-dd}.%i
            </fileNamePattern>

            <MaxHistory>90</MaxHistory><!--日志文件保留天数-->
            <maxFileSize>100MB</maxFileSize><!--日志块的大小,超出则按索引递增-->
        </rollingPolicy>
    </appender>
    <!--
      (2.3)文件插件————输出错误等级的日志
   -->
	<appender name="ERROR_FILE"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--(3.3.1)日志文件位置配置-->
		<file>${ERROR_FILE_PATH}</file>
        <!--(3.3.2)日志插件作用域配置-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
        <!--(3.3.2)日志文件输出格式配置-->
		<encoder>
			<pattern>${LOG_ENCODER_PATTERN}</pattern>
		</encoder>
        <!--(3.3.2)日志文件滚动策略配置-->
        <!-- 滚动策略 -->
		<rollingPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/${log.project}.error.logback.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
			<MaxHistory>90</MaxHistory><!--日志文件保留天数-->
			<maxFileSize>100MB</maxFileSize><!--日志块的大小,超出则按索引递增-->
		</rollingPolicy>
	</appender>

    <!--
       (3)日志插件引用
    -->
    <!--
       (3.1)所有环境共用配置
       一般来讲控制台我们需要输出info级别以下的信息即可
    -->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
    <!--(3.2)测试环境配置-->
    <springProfile name="test">
        <appender-ref ref="WHOLE_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </springProfile>
    <!--(3.3)生产环境配置-->
    <springProfile name="prod">
        <appender-ref ref="ERROR_FILE" />
    </springProfile>
    <!--
       (4)特殊包的配置
       指定一个包名独立给这些包设置登记或者日志配置
     -->
    <logger name="org.springframework.web" level="info"/>
    <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
</configuration>

日志配置——自定义appender (待完善)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐