【日志】logback配置与使用

logback日志的配置与使用

背景

日志级别有(从高到低):FATAL(致命),ERROR(错误),WARN(警告),INFO(信息),DEBUG(调试),TRACE(跟踪)或者 OFF(关闭),默认的日志配置在消息写入时将消息回显到控制台。默认情况下,将记录错误级别、警告级别和信息级别的消息
官网

最终效果图

  • %d 时间
  • %le 隔离级别
  • %t 当前线程名
  • %lo 类名
  • %m 日志信息

最终配置

application.properties
logging.config=classpath:logback-spring.xml
logging.level.root=info
logging.level.web=info
logging.level.sql=debug
logging.level.xxx=debug
logback-spring.xml
 

<configuration debug="false">

    
    <springProperty scope="context" name="SERVER_NAME" source="server.servlet.application-display-name"/>
    <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root"/>
    
    <property name="LOG_HOME" value="${sys:catalina.base:-.}/output/logs"/>
    
    <property name="CONSOLE_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5le) [%11(%.11t)] %cyan(%-50(%lo{50})) - %m%n"/>
    <property name="FILE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5le [%15(%.15t)] %-60(%lo{60}) - %m%n"/>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${CONSOLE_PATTERN}pattern>
        encoder>
    appender>
    
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd}.%i.logFileNamePattern>
            
            <MaxHistory>15MaxHistory>
            
            <maxFileSize>100MBmaxFileSize>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${FILE_PATTERN}pattern>
        encoder>
    appender>

    
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERRORlevel>
            <onMatch>ACCEPTonMatch>  
            <onMismatch>DENYonMismatch>  
        filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/dev/${SERVER_NAME}.%d{yyyy-MM-dd}.%i.logFileNamePattern>
            
            <MaxHistory>15MaxHistory>
            
            <maxFileSize>100MBmaxFileSize>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${FILE_PATTERN}pattern>
        encoder>
    appender>

    
    <springProfile name="dev">
        
        <root level="${LOG_ROOT_LEVEL}">
            <appender-ref ref="STDOUT"/>
        root>
    springProfile>

    <springProfile name="test|prod">
        
        <root level="${LOG_ROOT_LEVEL}">
            <appender-ref ref="FILE"/>
            <appender-ref ref="FILE_ERROR"/>
        root>
    springProfile>
configuration>

注意:SpringBoot推荐我们使用带-spring后缀的 logback-spring.xml 扩展配置,因为默认的的logback.xml标准配置,Spring无法完全控制日志初始化。(spring扩展对springProfile节点的支持)

配置console输出日志

<configuration>
	
    <property name="CONSOLE_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5le) [%11(%.11t)] %cyan(%-50(%lo{50})) - %m%n"/>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${CONSOLE_PATTERN}pattern>
        encoder>
    appender>
configuration>
配置file输出日志


<configuration debug="false">
    
    <property name="LOG_HOME" value="${sys:catalina.base:-.}/output/logs"/>
    
    <property name="CONSOLE_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5le) [%11(%.11t)] %cyan(%-50(%lo{50})) - %m%n"/>
    
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd}.%i.logFileNamePattern>
            
            <MaxHistory>15MaxHistory>
            
            <maxFileSize>100MBmaxFileSize>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${FILE_PATTERN}pattern>
        encoder>
    appender>
     
     <root level="INFO">
         <appender-ref ref="FILE"/>
     root>
configuration>
根节点
<configuration scan="true" scanPeriod="30 seconds" debug="false"> 
     
configuration/>
  • san: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true!
  • scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟!
  • debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false!
节点
  <property name="LOG_HOME" value="${sys:catalina.base:-.}/output/logs"/>
  • spring中配置property使用一致
节点
<springProperty scope="context" name="SERVER_NAME" source="server.servlet.application-display-name"/>
  • 获取spring上线文中的配置,注意:xml的名称必须-spring结尾 例如:logback-spring.xml
节点
  • 负责写日志的组件,它有两个必要属性name和class。
  • name指定appender名称
  • class指定appender的全限定名
    • ConsoleAppender(输出到控制台)
    • RollingFileAppender(输出到文件)
    • SMTPAppender(输出到邮件)
    • DBAppender(输出到数据库)
    • AsyncAppender(异步输出)
    • XxxAppender (不单独使用)
ConsoleAppender
<property name="CONSOLE_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5le) [%11(%.11t)] %cyan(%-50(%lo{50})) - %m%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
         
         <pattern>${CONSOLE_PATTERN}pattern>
     encoder>
appender>
  • : 对日志进行格式化
RollingFileAppender
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd}.%i.logFileNamePattern>
            
            <MaxHistory>15MaxHistory>
            
            <maxFileSize>100MBmaxFileSize>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>${FILE_PATTERN}pattern>
        encoder>
  appender>
  • :日志文件输出的文件名
  • :可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且是6,则只保存最近6天的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。
  • :这是活动文件的大小,默认值是10MB。
pattern日志格式

定义每行日志记录的格式,官网地址:https://logback.qos.ch/manual/layouts.html ,
常用变量别名(包括全称和简称)有:

变量名

%logger(简写:%c或%lo): 当前日志名称,如: Slf4jAndLogbackMain
%class(简写:%C): 日志调用所在类,如: com.dragon.study.log.Slf4jAndLogbackMain
%method(简写:%M): 日志所在方法,如: main
%caller: 日志调用位置,如:at com.dragon.study.log.Slf4jAndLogbackMain.main(Slf4jAndLogbackMain.java:15)
%thread(简写:%t): 日志调用所有线程序,如:main
%level(简写:%p或%le): 日志级别,如:INFO
%date(简写:%d): 日期,如: 2018-12-15 21:40:12,890
%msg(简写:%m): 日志记录内容
%exception(简写:%ex): 异常记录

宽度设置
%20logger:当字符数少于20个字符时,则左侧留空白;
%-20logger:当字符数少于20个字符时,则右侧留空白;
%.30logger:当字符数据大于30个时,则截断;

显示设置
%highligth:突出显示
%green(%red、%blue、%white):字体显示为指定颜色
{length}可指定长度,如%logger{36}

网络访问设置(依赖logger-access包)
%remoteIP(简写:%a):远程ip;
%localIP(简写:%A):本地ip;
%clientHost(简写:%h):远程主机名;
%localPort:本地端口;
%requestMethod(简写:%m):http请求方法;
%protocol(简写:%H):http请求协议;
%statusCode(简写:%s):http请求status code;
%requestURL(简写:%r):http请求地址;
%requestURI(简写:%U):http请求资源地址;
%queryString(简写:%q):http请求参数;
%server(简写:%v):服务器地址;
%elapsedTime(简写:%D):http请求处理的时间,单位是毫秒;
%elapsedSeconds(简写:%T):http请求处理的时间,单位是秒;
%date(简写:%t):日志记录时间;
%threadName(简写:%I):处理请求的线程名;
%reqAttribute{attributeName}:http请求attribute值;
%reqCookie{cookie}:http请求cookie值;
%reqContent:http请求体内容;
%fullRequest:http完整请求;
%responseContent:http响应;
%fullResponse:http完整响应;

你可能感兴趣的:(日志,java,logback,spring,spring,boot)