springboot学习之:logback配置,输出log到控制台和文件

pom

springboot已经整合了logback如果引了spring-boot-starter-web或者spring-boot-starter,那么就不需要再引logback了

yml

通过配置xml文件的方式加载logback配置
如果再resource下创建logback-spring.xml就不需要在yml中指定xml配置

logging:
  config: classpath:logback.xml

logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- scan="true"开启对配置信息的自动扫描(默认时间为60秒扫描一次) 注:当此文件的配置信息发生变化时,此设置的作用就体现出来了,不需要重启服务 -->
<configuration scan="true">

    <!-- 通过property标签,来存放key-value数据,便于后面的动态获取,提高程序的灵活性 -->
    <property name="log-dir" value="logs"/>
    <property name="log-name" value="logFile"/>

    <!-- >>>>>>>>>>>>>>>>>>>>>>>>>配置appender(可以配置多个)>>>>>>>>>>>>>>>>>>>>>>>>> -->
    <!--
        name:自取即可,
        class:加载指定类(ch.qos.logback.core.ConsoleAppender类会将日志输出到>>>控制台),
        patter:指定输出的日志格式
    -->
    <appender name="consoleAppender"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
            <!-- 日志编码 -->
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <!--
        name:自取即可,
        class:加载指定类(ch.qos.logback.core.rolling.RollingFileAppender类会将日志输出到>>>指定的文件中),
        patter:指定输出的日志格式 file:指定存放日志的文件(如果无,则自动创建) rollingPolicy:滚动策略>>>每天结束时,都会将该天的日志存为指定的格式的文件
        FileNamePattern:文件的全路径名模板 (注:如果最后结尾是gz或者zip等的话,那么会自动打成相应压缩包)
    -->
    <appender name="fileAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 把日志文件输出到:项目启动的目录下的log文件夹(无则自动创建)下 -->
        <file>${log-dir}/${log-name}.log</file>
        <!-- 把日志文件输出到:name为logFilePositionDir的property标签指定的位置下 -->
        <!-- <file>${logFilePositionDir}/logFile.log</file> -->
        <!-- 把日志文件输出到:当前磁盘下的log文件夹(无则自动创建)下 -->
        <!-- <file>/log/logFile.log</file> -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- TimeBasedRollingPolicy策略会将过时的日志,另存到指定的文件中(无该文件则创建) -->
            <!-- 把因为 过时 或 过大  而拆分后的文件也保存到目启动的目录下的log文件夹下  -->
            <fileNamePattern>${log-dir}/${log-name}.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <!-- 设置过时时间(单位:<fileNamePattern>标签中%d里最小的时间单位) -->
            <!-- 系统会删除(分离出去了的)过时了的日志文件 -->
            <!-- 本人这里:保存以最后一次日志为准,往前7天以内的日志文件 -->
            <MaxHistory>
                7
            </MaxHistory>
            <!-- 滚动策略可以嵌套;
                     这里嵌套了一个SizeAndTimeBasedFNATP策略,
                        主要目的是: 在每天都会拆分日志的前提下,
                        当该天的日志大于规定大小时,
                        也进行拆分并以【%i】进行区分,i从0开始
            -->
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <!-- 日志输出格式 -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
            <!-- 日志编码 -->
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>使用appender>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -->
    <!--
        指定[哪个包]下使用[哪个appender],并设置 记录到日志文件中的日志的最下
        级别(低于次级别的日志信息不回输出记录到日志文件中)
        注:日志级别有: trace|debug|info|warn|error|fatal
        注:当有多处指定了要记录的日志的最下日志级别时,走优先级最高的,优先级:
           logback-spring.xml中 > 启动jar包时 > xxx.properties/xxx.yml中
    -->
    <!--<logger name="com" level="trace">-->
    <logger name="com">
        <!-- 指定使用哪个appender fileAppender输出到文件-->
        <appender-ref ref="fileAppender"/>
    </logger>
    <!--
        root:logger的根节点,appender-ref:确定使用哪个appender,将日志信息显示在console
        注:如果不指定配置此项的话,那么SpringBoot启动后,将不会在console打印任何信息
    -->
    <root level="info">
    <!-- 指定使用哪个appender consoleAppender输出到控制台-->
        <appender-ref ref="consoleAppender"/>
    </root>
</configuration>
level等级:
1. static Level DEBUG :
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的,一般认为比较重要的方法执行需要详细查看运行情况的则开启debug。

2. static Level INFO
INFO level表明消息在粗粒度级别上突出强调应用程序的运行过程,只需要了解该方法是否运行的可以使用INFO

3. static Level WARN
WARN level表明会出现潜在错误的情形。

4. static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。一般异常处理等情况都需要ERROR

5. static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。

输出日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



logger.info("netty服务器开始监听端口:" + address.getPort());
static final Logger logger = LoggerFactory.getLogger(NettyServer.class);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值