默认情况下,spring boot使用的是LogBack日志系统。在spring-boot-starter-web和spring-boot-starter中都已经默认依赖了logging的工具包。

如果要使用指定版本的logging或其他的日志工具,需要先在starter-web和starter中将spring-boot-starter-logging排除。

使用LogBack

当我们在项目中添加了spring-boot-starter-web或spring-boot-starter依赖时,项目会自动关联依赖logging。即默认配置了LogBack,因此可以直接在项目中使用LoggerFactory来创建logger对象(注意:在LogBack中使用的是LoggerFactory)。

private static final Logger log = LoggerFactory.getLogger(Logger.class);

使用方法与其他日志一致

log.info("info");
log.war("war");
log.error("error");

在不添加配置的情况下,默认的logback日志范围是info。同时我们可以在application.properties中进行相应的配置(测试代码配置了该属性,但不论是logback或log4j2均无效,需要待查原因,考虑可能是未添加日志配置文件原因)

##配置日志级别
##root为根目录,即配置项目的所有日志
logging.level.root=warn
##配置com.yxf.demo包下的日志
logging.level.com.yxf.demo=WARN

默认情况下,日志只会输出在控制台,在application.properties中可以进行相应的配置。需要注意的是,如果我们没有添加logback-spring.xml配置文件,项目只会识别logging.file属性,不会识别logging.path属性,即如下配置,项目日志会生成在当前项目根目录下,而不会生成在d盘,文件名为springbootdemo.log。

logging.path=D://t
logging.file=springbootdemo.log

配置输出格式

logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n //配置控制台打印格式
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n //控制日志文件输出格式

上面配置中,各个符号对应的含义

%d{HH:mm:ss.SSS}——日志输出时间
%t——输出日志的线程(thread)名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger ——logger的名称,rootlogger没有名称,因此不会有输出
%msg——日志消息msg
%n——平台的换行符
%class{36}——类全名
%l——行号
%m——方法名
%f——类文件名
%I——包括类名、文件名、方法名、行数

最后,以上均是在springboot的application.properties配置文件中进行的日志配置,如果我们在单独的配置文件中配置,可以将文件命名为logback-spring.xml,项目会在加载springboot的配置文件后自动加载该文件,但是千万不能命名为logback.xml,因为虽然也会被项目自动加载,但是会在加载springboot的配置文件之前就加载,此时springboot里的配置将会无效。

使用Log4j2

如果使用非LogBack的日志系统,首先需要从相关依赖中剔除logging的依赖,并添加要使用的日志系统的相关依赖,如log4j2。

      <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
  </dependency>

如果不使用log4j2的配置文件,直接在application中配置,可以参考上面logback,相关配置参数一致。

如果使用log4j2的配置文件,将文件命名为log4j2.xml或log4j2-spring.xml,项目会对其自动加载。其他命名则需要在application中配置logging.config=classpath:**.xml。

log4j2的logger获取为LogManager,如下

Logger log = LogManager.getLogger();

剩余关于log4j2配置文件的配置,如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%-5p] %d %c - %m%n" />
</Console> <File name="File" fileName="/Users/jackie/workspace/rome/springboot.log">
<PatternLayout pattern="%m%n" />
</File>
</Appenders> <Loggers>
<root level="info">
<AppenderRef ref="CONSOLE" />
<AppenderRef ref="File" />
</root>
</Loggers>
</configuration>

<configuration>:log4j2.xml的最外层标签,所有的配置均在该标签内。

  status:设置log4j2自身内部信息输出,可以设置trace、info、error等,也可以不设置。如果设置为trace,可以看到log4j自身内部的信息输出。

  monitorInterval:设置log4j2自动检测配置、重新配置的时间,单位为秒。

<appenders>:输出源,可以配置一个或多个。

  <Console>:输出控制台配置。

    name:该输出源的名称。

    target:配置控制台的输出方式,可以是SYSTEM_ERR、SYSTEM_OUT等等。

    <thresholdFilter>:配置输出范围。

      level:输出的最低范围,可以为trace、debug、info、warn、error、fatal等。

      onMatch:配置达到level的日志信息如何处理,可以为ACCEPT(接收并打印)或DENY(不打印)。

      onMismatch:配置未达到level的日志信息如何处理,可以为ACCEPT(接收并打印)或DENY(不打印)。

    <PatternLayout>:日志输出格式。

      pattern:日志输出格式。

  <File>:文件输出配置

    name:该输出源的名称。

    filename:输出文件的路径与文件名。

    append:配置为false,每次运行项目时自动清空之前日志,配置为true,不会清空之前日志。

    <ThresholdFilter>、<PatternLayout>:如上。

  <RollingFile>:配置文件输出,当文件大小达到指定数额时,自动存入年-月文件夹下并压缩,作为存档。

    name:该输出源的名称。

    filename:输出文件的路径与文件名。

    filePattern:配置压缩文件路径与文件名,如log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.zip

    <PatternLayout>:如上。

    <SizeBasedTriggeringPolicy size="10MB"/> :配置文件大小。

    <TimeBasedTriggeringPolicy interval="1" />:配置文件更新时间,如果filePattern最小单位为月(如%d{yyyy-MM}),则单位为月,如果最小单位为日(如%d{MM-dd}),则单位为日。

    <DefaultRolloverStrategy max="20">:配置文件夹中最大的文件数,默认为7个文件。

  <RollingRandomAccessFile>:注意该方式采用异步操作,存在有缓冲区,日志不是实时地打印

<loggers>:输出对象。

  <root level="trace">:默认的logger

    <appender-ref ref="console" />:配置该logger的输出源,ref是上面所配的输出源的name值。只有配置了的输出源才会生效。

  <logger>:配置logger。

    name:该logger的名称。

    level:

    additivity:可加性,可以设置为true或false。如果为true,会继承root及父logger下的输出源。如果为false,则不会继承其他logger。

    <appender-ref ref="console" />:配置该logger的输出源,ref是上面所配的输出源的name值。只有配置了的输出源才会生效。

注意:

1.我们通过LogManager.getLogger();获取logger,会根据配置文件中<logger>的name属性来寻找使用哪一个Logger配置,一般是定义指定的包下的日志放在单独的文件中。如果使用getClass(),name匹配获得的类全名。如果使用字符串,name匹配字符串。如果不指定参数,或者匹配不到指定的logger,则默认获取root。(如果指定参数为字符串,则会根据字符串匹配logger的name值,匹配上,则使用logger的配置,否则仍使用root配置。如果指定参数为类对象,如xxx.class,则会根据类全名,即包名+类名,来匹配logger的name值,匹配上,则使用logger的配置,否则仍使用root配置。)

2.logger具有继承性,所有的logger默认继承root,可以通过属性additivity=false,设置不继承。同时name值com.yxf.demo1的logger,会默认继承name值为com.yxf的logger。也可以通过属性additivity来配置是否继承。

3.配置appender只输出某一级别的日志,可以如下

        <RollingFile name="infoRollingFile" fileName="${LOG_HOME}/%d{yyyy-MM-dd}log.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/sgylog-%d{yyyy-MM-dd}-%i.log.zip">
<PatternLayout pattern="${LOG_FORMAT}"></PatternLayout>
<filters>
<!-- 接收info及以上日志 -->
<ThresholdFilter level="info"></ThresholdFilter>
<!-- 不接收error及以上日志,两者搭配后即只输出info和warn两个级别的日志 -->
<ThresholdFilter level="error" onMatch="DENY" onMismatch="ACCEPT"></ThresholdFilter>
</filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile>

参考地址:https://www.cnblogs.com/hlhdidi/p/6749572.html

下面记录一下我目前使用的日志配置

<configuration>
<properties>
<!--日志目录-->
<property name="LOG_HOME">d://log</property>
<!--日志格式-->
<property name="LOG_FORMAT">%d{HH:mm:ss} %-5level %class{36} %L %M - %msg%n</property>
</properties> <appenders>
<!--控制台输处-->
<Console name="Console" target="SYSTEM_OUT">
<!--输出级别info及以上-->
<thresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"></thresholdFilter>
<PatternLayout pattern="${LOG_FORMAT}"></PatternLayout>
</Console> <!--文件输出-->
<File name="file" fileName="${LOG_HOME}/error.log">
<Filters>
<!--输出级别info及以上-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"></ThresholdFilter>
</Filters>
<PatternLayout pattern="${LOG_FORMAT}"></PatternLayout>
</File> <!--文件输出,输出级别为info和warn,按日,按大小生成压缩包-->
<RollingFile name="infoRollingFile" fileName="${LOG_HOME}/info.log"
filePattern="${LOG_HOME}/info/$${date:yyyy-MM}/sgyInfo-%d{yyyy-MM-dd}-%i.log.zip">
<PatternLayout pattern="${LOG_FORMAT}"></PatternLayout>
<filters>
<!--限制输出级别为info和warn-->
<ThresholdFilter level="info"></ThresholdFilter>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="ACCEPT"></ThresholdFilter>
</filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile> <!--文件输出,输出级别为error及以上,因为异常不是每天发生,因此只按大小生成压缩包-->
<RollingFile name="errorRollingFile" fileName="${LOG_HOME}/error.log"
filePattern="${LOG_HOME}/error/$${date:yyyy-MM}/sgyError-%d{yyyy-MM-dd}-%i.log.zip">
<!--输出级别为error及以上-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"></ThresholdFilter>
<PatternLayout pattern="${LOG_FORMAT}"></PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile>
</appenders> <loggers>
<root level="info">
<appender-ref ref="Console" />
<appender-ref ref="infoRollingFile"/>
</root>
<Logger name="info" additivity="false">
<appender-ref ref="infoRollingFile"/>
</Logger>
<Logger name="error" additivity="false">
<appender-ref ref="errorRollingFile"/>
</Logger>
</loggers>
</configuration>

l

springboot日志配置的更多相关文章

  1. SpringBoot Logback配置,SpringBoot日志配置

    SpringBoot Logback配置,SpringBoot日志配置  SpringBoot springProfile属性配置 ================================ © ...

  2. Springboot日志配置探索(主要看logback)(一)

    这篇博客是springboot日志配置探索的第一篇,主要讲默认配置下springboot的logback日志框架的配置(即直接使用是怎样的) 首先,是一个SpringBoot的有关日志的说明文档:ht ...

  3. 功能:SpringBoot日志配置详情

    SpringBoot日志配置详情 一.介绍 在所有的项目中,日志是必不可少的,为了高效清晰的查找日志,可以配置日志输出的等级和格式. 在配置后,可以自定义输出日志到指定目录,可以按照天数来分割日志,可 ...

  4. (转)Springboot日志配置(超详细,推荐)

    Spring Boot-日志配置(超详细) 更新日志: 20170810 更新通过 application.yml传递参数到 logback 中. Spring Boot-日志配置超详细 默认日志 L ...

  5. SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出

    写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...

  6. Springboot日志配置探索(主要看logback)(二)

    这篇博客主要是讲在Springboot中扩展的日志框架的配置,也是主要讲logback 8 继续看文档,这里讲到: springboot里面还有几个日志系统框架可以选择使用,你可以通过在classpa ...

  7. springboot 日志配置

    maven依赖中添加了 spring-boot-starter-logging : <dependency> <groupId>org.springframework.boot ...

  8. 微服务-springboot日志配置

    springboot 默认会加载classpath:logback-spring.xml文件. springProfile 中的name名字对应application-xx.properties 中的 ...

  9. ELK springboot日志收集

    一.安装elasticsearch 可以查看前篇博客 elasticsearch安装.elasticsearch-head 安装 二.安装 配置 logstash 1.安装logstash 下载地址: ...

随机推荐

  1. thymeleaf(一)

    (一)Thymeleaf 是个什么?      简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...

  2. python API whoami

    import getpass print getpass.getuser() See the documentation of the getpass module. getpass.getuser( ...

  3. allegro画电路板

    出图: 选择save all checked导出film_setup.txt: 选择replace导入film_setup.txt: 丝印层选择silkscreen,但是silkscreen和asse ...

  4. Eclispe最常用的几个快捷键

    熟练使用快捷键可以在很大程度上提高我们的工作效率,Eclipse的快捷键很多,但是常用的也就那么几个,下面说下Eclispe最常用的几个快捷键: Eclipse的快捷键组合可在Eclipse按下ctr ...

  5. Compile caffe on unbutu 16.0.4

    1. apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhd ...

  6. javascript匿名函数 闭包

    匿名函数 (function(){                console.info("111111111");            })(); var my = (fun ...

  7. listview添加数据

    1. 添加数据: ListView1.ViewStyle:=vsReport; ListView1.Columns.Add; ListView1.Columns[0].Caption:='aaaa'; ...

  8. post方式接口测试(一)_新建测试用例

    第一种方式:拷贝别人的 第二种方式:自己创建 二.打开浏览器(此处chrome),F12打开开发模式,输入网址登录,此时可获取到登录的 Request URL 二.打开postman,进入自己的Col ...

  9. Django之get请求url的参数

    当get网址是127.0.0.1:8000/mysite10这种类型的网址时 有两种方法: 1,在urls的路由的urlpatterns里面这样定义路由 re_path('^mysite(\d+)$' ...

  10. Mac 报错:-bash: telnet: command not found

    解决方法 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/i ...