• logger 的使用 二logback使用配置详解


    下面是一些最基本的,详细的参考:https://logback.qos.ch/manual/index.html

     我的使用:把error日志打印在另一个文件,可以用ELK 统一管理

    最近使用:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Sea 整理于 2018-08-31 -->
    <configuration debug="false" scan="true" scanPeriod="30 seconds">
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        <jmxConfigurator/>
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME_INFO" value="/tmp/milestone-subscription-service/logger/info"/>
        <property name="LOG_HOME_ERROR" value="/tmp/milestone-subscription-service/logger/error"/>
        <property name="LOG_HOME_KAFKA" value="/tmp/milestone-subscription-service/logger/kafka"/>
        <!-- 文件名前缀,一般为项目名-->
        <property name="LOG_PREFIX" value="milestone-subscription-service"/>
        <!-- 控制台输出 -->
        <appender name="STDOUT" 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>
            </encoder>
        </appender>
        <!--info 按照每天生成日志文件 -->
        <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${LOG_HOME_INFO}/${LOG_PREFIX}-info.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
            <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>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>100MB</MaxFileSize>
    
            </triggeringPolicy>
            <!-- 设置过滤级别 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
        </appender>
    
        <!-- error按照每天生成日志文件 -->
        <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${LOG_HOME_ERROR}/${LOG_PREFIX}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
            <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>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
    
            </triggeringPolicy>
            <!-- 设置过滤级别 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
        </appender>
    
        <!--set the kafka log to another folder-->
        <appender name="FILE_KAFKA" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${LOG_HOME_KAFKA}/${LOG_PREFIX}-info.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
            <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>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>100MB</MaxFileSize>
    
            </triggeringPolicy>
            <!-- 设置过滤级别 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
        </appender>
    
        <!--set the xxl job thread log level to warn-->
        <logger name="com.xxl.job.core.thread" level="WARN"/>
    
        <logger name="com.icil.elsa.subscribe.milestone.listener" level="DEBUG" additivity="false">
            <appender-ref ref="FILE_KAFKA" />
        </logger>
        <logger name="org.apache.kafka.clients.consumer.internals" level="INFO" additivity="false">
            <appender-ref ref="FILE_KAFKA" />
        </logger>
        <logger name="org.springframework.kafka.listener" level="INFO" additivity="false">
            <appender-ref ref="FILE_KAFKA" />
        </logger>
    
    
        <!-- 日志输出级别 -->
        <!-- <root level="DEBUG"> -->
        <root level="info">
            <!--<appender-ref ref="STDOUT" />-->
            <appender-ref ref="FILE_ERROR"/>
            <appender-ref ref="FILE_INFO"/>
        </root>
    </configuration>
    View Code

    我的使用:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Sea 整理于 2018-08-31 -->
    <configuration debug="false" scan="true" scanPeriod="30 seconds">
     <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
     <property name="LOG_HOME" value="/tmp/log" /> 
    <!-- 文件名前缀,一般为项目名-->
     <property name="LOG_PREFIX" value="VAT-service" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" 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>
    </encoder>
    </appender>
    <!--info 按照每天生成日志文件 -->
    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/${LOG_PREFIX}-info.%d{yyyy-MM-dd}.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>60</MaxHistory>
    <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <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>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>100MB</MaxFileSize>
    
    </triggeringPolicy>
      <!-- 设置过滤级别 -->
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
      </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
    </appender>
    
    <!-- error按照每天生成日志文件 -->
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/${LOG_PREFIX}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>30</MaxHistory>
    <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <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>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>10MB</MaxFileSize>
    
    </triggeringPolicy>
      <!-- 设置过滤级别 -->
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
      </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
    </appender>
    
    
    <!-- 日志输出级别 -->
    <!-- <root level="DEBUG"> -->
    <root level="info">
    <!-- <appender-ref ref="STDOUT" /> -->
     <appender-ref ref="FILE_ERROR" />
    <appender-ref ref="FILE_INFO" /> 
    </root>
    </configuration>
    View Code

    logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Sea 整理于 2018-08-31 -->
    <configuration debug="false" scan="true" scanPeriod="30 seconds">
     <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
     <property name="LOG_HOME" value="C:\Users\lenove\Desktop\Testlogger" />
    <!-- 文件名前缀,一般为项目名-->
     <property name="LOG_PREFIX" value="icil-esolution-service" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" 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>
    </encoder>
    </appender>
    <!--info 按照每天生成日志文件 -->
    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/${LOG_PREFIX}-info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>30</MaxHistory>
    <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <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>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>100MB</MaxFileSize>
    
    </triggeringPolicy>
      <!-- 设置过滤级别 -->
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
      </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
    </appender>
    
    <!-- error按照每天生成日志文件 -->
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/${LOG_PREFIX}-error.log.%d{yyyy-MM-dd}.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>30</MaxHistory>
    <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <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>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>10MB</MaxFileSize>
    
    </triggeringPolicy>
      <!-- 设置过滤级别 -->
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
      </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
    </appender>
    
    
    <!-- 日志输出级别 -->
    <!-- <root level="DEBUG"> -->
    <root level="info">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE_ERROR" />
    <appender-ref ref="FILE_INFO" />
    </root>
    </configuration>
    View Code

    1.依赖:

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <logback.version>1.1.7</logback.version>
        <slf4j.version>1.7.21</slf4j.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>${logback.version}</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>${logback.version}</version>
          </dependency>
      </dependencies>
    View Code

     参考:https://www.cnblogs.com/reason-cai/p/6763108.html

    2.logback.xml 

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
     <property name="LOG_HOME" value="C:\Users\lenove\Desktop\Testlogger" /> 
    <!-- 控制台输出 -->
    <appender name="STDOUT" 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>
    </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/esolutions.log.%d{yyyy-MM-dd}.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>30</MaxHistory>
    </rollingPolicy>
    <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>
    </encoder>
    <!--日志文件最大的大小-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
    </appender>
    
    <!-- 日志输出级别 -->
    <!-- <root level="DEBUG"> -->
    <root level="info">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
    </root>
    </configuration>
    View Code

    3.可参考的logback.xml

    我的logback.xml常用配置:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="60 seconds">
    <property name="LOG_HOME" value="../log2" />
        <!-- Simple file output -->
        <appender name="FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
            <encoder>
                <pattern>
                    [ %-5level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] %logger{96} [%line] [%thread]- %msg%n
                </pattern>
    
                <charset>UTF-8</charset> <!-- 此处设置字符集 -->
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->
                <fileNamePattern>${LOG_HOME}/log_%d{yyyyMMdd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- or whenever the file size reaches 64 MB -->
                    <maxFileSize>64 MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
    
    
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
            <prudent>false</prudent>
        </appender>
    
    
        <!-- Console output -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
            <encoder>
                <pattern>
                    [ %-5level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] %logger{96} [%line] [%thread]- %msg%n
                </pattern>
                <charset>UTF-8</charset> <!-- 此处设置字符集 -->
            </encoder>
            <!-- Only log level WARN and above -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
        </appender>
        
        <!-- 邮件监控异常 -->
    <!--    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
            <smtpHost>smtp.163.com</smtpHost>
            <username>cairs-2w010@163.com</username>
            <password>zxc1s2dsa46</password>
            <from>cairs-2010@163.com</from>
            <to>403411d876@qq.com</to>
            <subject>【web-ext-Error】: %logger</subject>
         <layout class="ch.qos.logback.classic.html.HTMLLayout"/>   
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
        </appender>-->
    
        <!-- Enable FILE and STDOUT appenders for all log messages. By default, 
            only log at level INFO and above. -->
        <root level="INFO">
            <appender-ref ref="FILE" />
            <!--<appender-ref ref="STDOUT" />-->
            <!--<appender-ref ref="EMAIL" />-->
        </root>
    
        <!-- For loggers in the these namespaces, log at all levels. -->
        <!-- <logger name="pedestal" level="ALL" /> <logger name="hammock-cafe" 
            level="ALL" /> <logger name="user" level="ALL" /> -->
    </configuration>
    View Code
  • 相关阅读:
    记账本第二天
    记账本第一天
    HDU 1811
    Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes
    KMP超强模板贴一份
    2014辽宁省赛总结
    Codeforces Round #244 (Div. 2)
    CodeForces 383D Antimatter
    NEU 1351 Goagain and xiaodao's romantic story I
    UVA 10692 Huge Mod
  • 原文地址:https://www.cnblogs.com/lshan/p/9348587.html
Copyright © 2020-2023  润新知