当前位置: 代码网 > it编程>编程语言>Java > SpringBoot+logback默认日志的配置和使用方式

SpringBoot+logback默认日志的配置和使用方式

2024年05月26日 Java 我要评论
springboot+logback默认日志的配置和使用记录一下springboot2.0.x使用默认logback日志的配置和常见使用springboot的默认日志是logback,在springb

springboot+logback默认日志的配置和使用

记录一下springboot2.0.x使用默认logback日志的配置和常见使用

springboot的默认日志是logback,在springboot2.0.x版本中使用logback很方便而且内存开销小,速度快,还不需要去单独的配置maven的jar包,因为已经集成整合了的。

作为专门写代码来应用的,不需要知道logback到底怎么实现的,什么底层,什么抽象层,反正用springboot默认的就对了,有特殊要求使用其他的 ,查找博客就能解决导包这些问题。

<parent>
	<groupid>org.springframework.boot</groupid>
	<artifactid>spring-boot-starter-parent</artifactid>
	<version>2.0.5.release</version>
	<relativepath/> <!-- lookup parent from repository -->
</parent>

从这里点进去

<!--web模块的启动器 -->
<dependency>
	<groupid>org.springframework.boot</groupid>
	<artifactid>spring-boot-starter-web</artifactid>
</dependency>

可以看到这个starter 继续点进去查看

<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter</artifactid>
  <version>2.0.5.release</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-logging</artifactid>
  <version>2.0.5.release</version>
  <scope>compile</scope>
</dependency>

myw

配置文件的位置

在项目的/src/main/resources目录下,新建logback的默认日志配置文件logback-spring.xml(配置默认就能生效)

myw

注意:当然也可以直接logback.xml直接测试也是能生效的

如果说我不喜欢他的默认文件名 我非要自定义呢?

自定义配置文件名 myw-logback-test.xml

单独加一个配置在application.properties

#配置文件
logging.config=classpath:myw-logback-test.xml

myw

配置文件内容

logback的配置文件内容 这个还真的逐字逐句的了解其真意,这对使用来说特别有用的,最常用的文件类型格式如下

<?xml version="1.0" encoding="utf-8"?>
<configuration  scan="true" scanperiod="60 seconds" debug="false">
	
	<!--不设置的话默认名称是default,contextname标签能设置成其他名称,用于区分不同程序应用-->
    <contextname>spring-boot-logging-myw</contextname>
    
    <!--配置日志文件的输出路径-->
    <property name="log.path" value="myw-log/" />  
    
    <!--输出到控制台或者文件-->
    <appender name="xxxxxx" class="ch.qos.logback.core.xxxxxxxxx">
    	<!--内容-->
    </appender>
    
	<!-- 用来设置某一个包或者具体的某一个类的日志打印 -->
	<logger level="xxxx" name="xxxxx">
		<!--内容-->
	</logger>

    <!--指定基础控制台的日志输出级别,level属性指定级别 必须配置的-->
    <root level="xxx">
    	<!--内容-->
    </root>

</configuration>

configuration标签

  • scan=“true” scan属性默认就是true 意思是说配置文件发生改变后,将会重新加载,默认值为true 实际使用默认就可以。
  • scanperiod=“60 seconds” 这个是设置检测配置文件是否修改的时间间隔,时间单位默认是毫秒,默认1分钟,但是给了秒的单位后就是秒,一般大家都是是60 seconds这样配置。
  • debug=“false” 这个属性默认是false 如果需要查看logback内部日志,可以设置为true时,这样可以实时查看logback运行状态数据,实际上没用过也没测试过 不关心这个点儿。

contextname标签

这个标签默认名字是default 如果需要可以改成其他名字,一般没用

<!--不设置的话默认名称是default,contextname标签能设置成其他名称,用于区分不同程序应用-->
<contextname>spring-boot-logging-myw</contextname>

在idea的控制台会显示设置的名称

myw

但是在log日志文件里没有这个属性值

myw

property标签

用法是在当前根目录下创建日志文件夹

<!-- 当前根目录下创建路径 -->
<property name="log.path" value="myw-log/" />

也可以使用绝对路径 在linux中用绝对路径反而更美,一般放在linux的data目录下面,这样不管是直接启动还是使用脚本启动还是服务方式开机启动 都在data下面 当然也可以用相对路径 但是在加了开机启动service方式可能日志路径在/根目录下面。

<property name="log.path" value="/data/myw-log/" />

在项目中运行的话这个日志文件在

myw

appender标签

<!--输出到文件-->
<appender name="file_info" class="ch.qos.logback.core.rolling.rollingfileappender">
	<!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_info.log</file>
    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    
    <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
        <filenamepattern>${log.path}/sys_log-info-%d{yyyy-mm-dd}-%i.log</filenamepattern>
        <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
			<maxfilesize>50mb</maxfilesize>
		</timebasedfilenamingandtriggeringpolicy>
        <!-- 日志保存周期  天数-->
        <maxhistory>30</maxhistory>
    </rollingpolicy>
    
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>info</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>
</appender>

appender标签的name和class name可以根据需要定义 class就给ch.qos.logback.core.rolling.rollingfileappender搞定,滚动记录文件,目的是当符合某个条件时,将日志记录到特殊的日志文件,其他方式也有,具体调整具体配置,写入文件用这个就够了,无需多学。 

file标签用来定义文件名字,encoder标签用来定义日志记录格式和编码的,没啥好说的。 

rollingpolicy标签,用来移动和重命名日志文件的,使用class="ch.qos.logback.core.rolling.timebasedrollingpolicy"就可以了,里面的标签有配置日志保存天数 日志文件大小等,也都直接用,要对日志的配置研究深入再说吧。

filter标签,class属性有临界值过滤和级别过滤

class=“ch.qos.logback.classic.filter.levelfilter”

根据日志级别进行过滤,如果日志级别等于配置级别,过滤器会根据onmath(用于配置符合过滤条件的操作) 和 onmismatch(用于配置不符合过滤条件的操作)接收或拒绝日志,一般用这种。

 <!-- 级别过滤 -->
 <filter class="ch.qos.logback.classic.filter.levelfilter">
     <level>info</level>
     <onmatch>accept</onmatch>
     <onmismatch>deny</onmismatch>
 </filter>
class=“ch.qos.logback.classic.filter.thresholdfilter”

过滤掉低于指定临界值的日志,当日志级别等于或高于临界值时,过滤器返回neutral;当日志级别低于临界值时,日志会被拒绝。

<!-- 级别过滤 -->
<filter class="ch.qos.logback.classic.filter.thresholdfilter">
    <level>info</level>
</filter>
  • deny:日志将立即被抛弃不再经过其他过滤器。
  • neutral:有序列表里的下个过滤器过接着处理日志。
  • accept:日志会被立即处理,不再经过剩余过滤器。

日志级别

日志级别从低到高分为 trace < debug < info < warn < error < fatal 

trace 和 fatal 忽略 那么只关心日志级别 debug < info < warn < error

那么我需要把debug info warn error分开写入不同的文件的配置

<!--输出到文件-->
<appender name="file_debug" class="ch.qos.logback.core.rolling.rollingfileappender">
	<!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_debug.log</file>
    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    
    <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
        <filenamepattern>${log.path}/sys_log-debug-%d{yyyy-mm-dd}-%i.log</filenamepattern>
        <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
			<maxfilesize>50mb</maxfilesize>
		</timebasedfilenamingandtriggeringpolicy>
        <!-- 日志保存周期  天数-->
        <maxhistory>30</maxhistory>
    </rollingpolicy>
    
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>debug</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>
</appender>

<!--输出到文件-->
<appender name="file_error" class="ch.qos.logback.core.rolling.rollingfileappender">
	<!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_error.log</file>
    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    
    <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
        <filenamepattern>${log.path}/sys_log-error-%d{yyyy-mm-dd}-%i.log</filenamepattern>
        <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
			<maxfilesize>50mb</maxfilesize>
		</timebasedfilenamingandtriggeringpolicy>
        <!-- 日志保存周期  天数-->
        <maxhistory>30</maxhistory>
    </rollingpolicy>
    
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>error</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>
</appender>

<!--输出到文件-->
<appender name="file_info" class="ch.qos.logback.core.rolling.rollingfileappender">
	<!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_info.log</file>
    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    
    <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
        <filenamepattern>${log.path}/sys_log-info-%d{yyyy-mm-dd}-%i.log</filenamepattern>
        <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
			<maxfilesize>50mb</maxfilesize>
		</timebasedfilenamingandtriggeringpolicy>
        <!-- 日志保存周期  天数-->
        <maxhistory>30</maxhistory>
    </rollingpolicy>
    
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>info</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>
</appender>

<!--输出到文件-->
<appender name="file_warn" class="ch.qos.logback.core.rolling.rollingfileappender">
	<!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_warn.log</file>
    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    
    <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
        <filenamepattern>${log.path}/sys_log-warn-%d{yyyy-mm-dd}-%i.log</filenamepattern>
        <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
		<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
			<maxfilesize>50mb</maxfilesize>
		</timebasedfilenamingandtriggeringpolicy>
        <!-- 日志保存周期  天数-->
        <maxhistory>30</maxhistory>
    </rollingpolicy>
    
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>warn</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>
</appender>
    

我们在开发的时候 控制台也是需要打印日志的,因此需要配置

<!--输出到控制台-->
<appender name="console_debug" class="ch.qos.logback.core.consoleappender">
	
	<!--日志输出格式 -->
    <encoder>
        <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>
   
    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>debug</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>

</appender>

<!--输出到控制台-->
<appender name="console_info" class="ch.qos.logback.core.consoleappender">

    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>

    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>info</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>

</appender>

<!--输出到控制台-->
<appender name="console_warn" class="ch.qos.logback.core.consoleappender">

    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>

    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>warn</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>

</appender>

<!--输出到控制台-->
<appender name="console_error" class="ch.qos.logback.core.consoleappender">

    <!--日志输出格式 -->
    <encoder>
        <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>utf-8</charset> <!-- 此处设置字符集 -->
    </encoder>

    <!-- 级别过滤 -->
    <filter class="ch.qos.logback.classic.filter.levelfilter">
        <level>error</level>
        <onmatch>accept</onmatch>
        <onmismatch>deny</onmismatch>
    </filter>

</appender>

root标签

用来指定控制台的输出级别和记录日志的级别,一般使用info级别

 <root level="debug">
 	<appender-ref ref="file_debug" />
 	<appender-ref ref="file_info" />
 	<appender-ref ref="file_warn" />
     <appender-ref ref="file_error" />
     <appender-ref ref="console_debug" />
     <appender-ref ref="console_info" />
     <appender-ref ref="console_warn" />
     <appender-ref ref="console_error" />
 </root>

写一个控制层logbackcontroller

package boot.example.logback.controller;

import org.slf4j.logger;
import org.slf4j.loggerfactory;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;

@restcontroller
@requestmapping(value="/logback")
public class logbackcontroller {
	
	private final logger log =  loggerfactory.getlogger(this.getclass());
	
	@requestmapping(value="/hello")
	public string hello() {
		system.out.println("system.out.println 打印");
		log.info("log info 日志");
		log.error("log error 日志");
		log.warn("log warn 日志");
		log.debug("log debug 日志");

		return "hello world";
	}
}

root标签的level属性设置debug

启动的时候控制台会显示很多信息,然后访问接口可以看到四种级别的日志都有,甚至还有调试日志

myw

在查看file文件的日志

myw

root标签的level属性设置info

设置info后可以看到debug日志没有了,相对来说好的多了 info也是推荐的设置,因为他能显示info warn和error的日志数据

控制台 -已经没有了debug的数据

myw

文件的日志

myw

myw

root标签的level属性设置warn

控制台 只有error和warn 至于上面的debug是main的 无需关心

myw

文件日志

myw

myw

至于error 不测试了

完整的logback-spring.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration  scan="true" scanperiod="60 seconds" debug="false">

    <!--不设置的话默认名称是default,contextname标签能设置成其他名称,用于区分不同程序应用-->
    <contextname>spring-boot-logging-myw</contextname>

    <!-- 当前根目录下创建路径 -->
    <property name="log.path" value="myw-log/" />
    
    <!--输出到控制台-->
    <appender name="console_debug" class="ch.qos.logback.core.consoleappender">
    	
    	<!--日志输出格式 -->
        <encoder>
            <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>
       
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>debug</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>

    </appender>

    <!--输出到控制台-->
    <appender name="console_info" class="ch.qos.logback.core.consoleappender">

        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>

        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>info</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>

    </appender>

    <!--输出到控制台-->
    <appender name="console_warn" class="ch.qos.logback.core.consoleappender">

        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>

        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>warn</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>

    </appender>

    <!--输出到控制台-->
    <appender name="console_error" class="ch.qos.logback.core.consoleappender">

        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{hh:mm:ss.sss} %contextname [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>

        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>error</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>

    </appender>

    <!--输出到文件-->
    <appender name="file_debug" class="ch.qos.logback.core.rolling.rollingfileappender">
    	<!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_debug.log</file>
        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/sys_log-debug-%d{yyyy-mm-dd}-%i.log</filenamepattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
				<maxfilesize>50mb</maxfilesize>
			</timebasedfilenamingandtriggeringpolicy>
            <!-- 日志保存周期  天数-->
            <maxhistory>30</maxhistory>
        </rollingpolicy>
        
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>debug</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>

    <!--输出到文件-->
    <appender name="file_info" class="ch.qos.logback.core.rolling.rollingfileappender">
    	<!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_info.log</file>
        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/sys_log-info-%d{yyyy-mm-dd}-%i.log</filenamepattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
				<maxfilesize>50mb</maxfilesize>
			</timebasedfilenamingandtriggeringpolicy>
            <!-- 日志保存周期  天数-->
            <maxhistory>30</maxhistory>
        </rollingpolicy>
        
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>info</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>
    
    <!--输出到文件-->
    <appender name="file_warn" class="ch.qos.logback.core.rolling.rollingfileappender">
    	<!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_warn.log</file>
        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        
        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/sys_log-warn-%d{yyyy-mm-dd}-%i.log</filenamepattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
			<timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
				<maxfilesize>50mb</maxfilesize>
			</timebasedfilenamingandtriggeringpolicy>
            <!-- 日志保存周期  天数-->
            <maxhistory>30</maxhistory>
        </rollingpolicy>
        
        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>warn</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>

    <!--输出到文件-->
    <appender name="file_error" class="ch.qos.logback.core.rolling.rollingfileappender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_error.log</file>
        <!--日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf-8</charset> <!-- 此处设置字符集 -->
        </encoder>

        <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">
            <filenamepattern>${log.path}/sys_log-error-%d{yyyy-mm-dd}-%i.log</filenamepattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过50m,若超过50m,日志文件会以索引0开始, 命名日志文件,例如xxx-2023-07-16.0.log -->
            <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp">
                <maxfilesize>50mb</maxfilesize>
            </timebasedfilenamingandtriggeringpolicy>
            <!-- 日志保存周期  天数-->
            <maxhistory>30</maxhistory>
        </rollingpolicy>

        <!-- 级别过滤 -->
        <filter class="ch.qos.logback.classic.filter.levelfilter">
            <level>error</level>
            <onmatch>accept</onmatch>
            <onmismatch>deny</onmismatch>
        </filter>
    </appender>


    <root level="info">
    	<appender-ref ref="file_debug" />
    	<appender-ref ref="file_info" />
    	<appender-ref ref="file_warn" />
        <appender-ref ref="file_error" />
        <appender-ref ref="console_debug" />
        <appender-ref ref="console_info" />
        <appender-ref ref="console_warn" />
        <appender-ref ref="console_error" />
    </root>

</configuration>

在java中最简单的使用

private final logger log =  loggerfactory.getlogger(this.getclass());

在静态类里面

package boot.example.logback.controller;


import org.slf4j.logger;
import org.slf4j.loggerfactory;

public class staticutils {
    public static final logger log =  loggerfactory.getlogger(staticutils.class);

    public static void testlog(){
        log.info("log info");
    }
}

还可以借助lombok

<dependency>
	<groupid>org.projectlombok</groupid>
	<artifactid>lombok</artifactid>
	<version>release</version>
	<scope>compile</scope>
</dependency>
package boot.example.logback.controller;

import lombok.extern.slf4j.slf4j;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.restcontroller;


@slf4j
@restcontroller
@requestmapping(value="/logback")
public class logbackcontroller2 {

	@requestmapping(value="/hello2")
	public string hello() {
		system.out.println("system.out.println2 打印");
		log.info("log info2 日志");
		log.error("log error2 日志");
		log.warn("log warn2 日志");
		log.debug("log debug2 日志");

		staticutils2.testlog();

		return "hello world";
	}


}

package boot.example.logback.controller;


import lombok.extern.slf4j.slf4j;

@slf4j
public class staticutils2 {

    public static void testlog(){
        log.info("log info");
    }
}

至于logback里的其他标签 不是真正的刚需就不需要去花时间记录了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com