SpringBoot日志配置

  4 分钟   8818 字    |    

SpringBoot 日志配置

配置

  1. 日志框架:log4j

log4j.properties

# 输出级别
log4j.rootLogger=INFO, stdout, R
#log4j.rootLogger=ERROR, D
# 屏蔽输出
log4j.logger.org.springframework.integration=error
log4j.logger.org.springframework.context.support=error
log4j.logger.org.hibernate.validator.internal=error
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# 输出到文件:文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logs/RollingFile.log
log4j.appender.R.Threshold=DEBUG
log4j.appender.R.Append=true
log4j.appender.R.MaxFileSize=1000KB
log4j.appender.R.MaxBackupIndex=3
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %c:%p ]  %m%n
# 输出到文件:每天都创建一个文件
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ../logs/DailyRollingFile.log
log4j.appender.D.Threshold = ERROR
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
  1. 日志框架:logback

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 -->
	<property name="log.path" value="./logs" />
    <!-- 日志输出格式 -->
	<property name="console.pattern" value="[ %-5level] [%C] - [%method:%line] - %msg%n" />
    <property name="file.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

	<!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${console.pattern}</pattern>
		</encoder>
	</appender>

    <appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-warn.log</file>
        <!--指定拆分规则-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--按照时间和压缩格式声明拆分的文件名-->
            <fileNamePattern>${log.path}/sys-warn.%d{yyyy-MM-dd}.log.%i</fileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <!--按照文件大小拆分,日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始 -->
            <maxFileSize>10MB</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>${file.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>WARN</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

	<!-- 系统模块日志级别控制  -->
	<logger name="com.dec" level="info" />
    <!-- 调整类输出级别 -->
    <logger name="org.springframework.integration" level="error"/>
    <logger name="org.springframework.context.support" level="error"/>
    <logger name="org.hibernate.validator.internal" level="error"/>
    <logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="error"/>
    <logger name="com.zaxxer.hikari.HikariDataSource" level="error"/>
	<!--系统操作日志-->
    <root level="info">
        <appender-ref ref="console" />
    </root>
    <root level="warn">
        <appender-ref ref="file_warn" />
    </root>
</configuration> 
  1. 日志框架:log4j2(log4j的升级版)

log4j2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    status="warn" 日志框架本身的输出日志级别,可以修改为debug
    monitorInterval="5" 自动加载配置文件的间隔时间,不低于 5秒;生产环境中修改配置文件,是热更新,无需重启应用
    ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
 -->
<configuration status="warn" monitorInterval="5">
    <!--
    集中配置属性进行管理
    使用时通过:${ }
    -->
    <properties>
        <property name="LOG_HOME">./logs</property>
    </properties>

    <!-- 日志处理 -->
    <Appenders>
        <!-- 控制台输出 appender,SYSTEM_OUT输出黑色,SYSTEM_ERR输出红色 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台输出info以上级别的日志 -->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%5p ] (%F:%L) - %m%n" />
        </Console>
        <!-- 按照一定规则拆分的日志文件的appender -->  <!-- 拆分后的文件 -->
        <!-- filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/myrollog-%d{yyyy-MM-dd-HH-mm}-%i.log"> -->
        <RollingFile name="rollingFile" fileName="${LOG_HOME}/rollingFile.log"
                     filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/rollingFile-%d{yyyy-MM-dd}-%i.log">
            <!-- 日志级别过滤器 -->
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
            <!-- 日志消息格式 -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}  [%p] - [%t] - (%c:%L) %m%n" />
            <Policies>
                <!-- 在系统启动时,触发拆分规则,生产一个新的日志文件 -->
                <OnStartupTriggeringPolicy />
                <!-- 按照文件大小拆分,10MB -->
                <SizeBasedTriggeringPolicy size="10MB" />
                <!-- 按照时间节点拆分,规则根据filePattern定义的 -->
                <TimeBasedTriggeringPolicy />
            </Policies>
            <!-- 在同一个目录下,文件的个限定为 10 个,超过进行覆盖 -->
            <DefaultRolloverStrategy max="10" />
        </RollingFile>
    </Appenders>

    <!-- logger 定义 -->
    <Loggers>
        <!-- 使用 rootLogger 配置 日志级别见第5节 -->
        <Root level="info">
            <!-- 指定日志使用上面哪个处理器 -->
            <AppenderRef ref="Console" />
            <AppenderRef ref="rollingFile" />
        </Root>
        <!-- 调整类输出级别 -->
        <logger name="org.springframework.integration" level="error"/>
        <logger name="org.springframework.context.support" level="error"/>
        <logger name="org.hibernate.validator.internal" level="error"/>
        <logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="error"/>
        <logger name="com.zaxxer.hikari.HikariDataSource" level="error"/>

    </Loggers>
</configuration>

相关参数

#%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
#%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#%r: 输出自应用启动到输出该log信息耗费的毫秒数
#%c: 输出日志信息所属的类目,通常就是所在类的全名
#%t: 输出产生该日志事件的线程名
#%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
#%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
#%%: 输出一个"%"字符
#%F: 输出日志消息产生时所在的文件名称
#%L: 输出代码中的行号
#%m: 输出代码中指定的消息,产生的日志具体信息
#%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行

参考

  1. https://www.cnblogs.com/xiaobaizhiqian/p/7956690.html
~  ~  The   End  ~  ~


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
文章二维码 分类标签:技术springboot
文章标题:SpringBoot日志配置
文章链接:http://120.46.217.131:82/archives/66/
最后编辑:2023 年 5 月 29 日 21:57 By Yang
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
(*) 2 + 9 =
快来做第一个评论的人吧~