日志输出
使用了spring-boot-starter
后,将添加spring-boot-starter-logging
依赖,此时Spring Boot将使用logback进行日志输出,默认只会输出INFO级别以上的日志信息,且只会输出到控制台。默认的日志格式是如下这样的。前面是日志输出时间,INFO
是日志级别,7496
是进程号,[ost-startStop-1]
是用[]
包起来的线程名,o.s.web.context.ContextLoader
是日志名称,接下来冒号后面的内容就是真正的日志信息。
2018-07-06 16:03:13.083 INFO 7496 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2954 ms
2018-07-06 16:03:13.255 INFO 7496 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
可以通过logging.pattern.dateformat
单独指定日志里面的日期输出格式,可以通过logging.pattern.level
单独指定日志中日志级别输出的格式。下面的代码中就分别指定了日期输出格式和日志级别的输出格式。
logging.pattern.dateformat=HH:mm:ss.sss
logging.pattern.level=custom-%5p
按照上面自定义的日期格式和日志级别输出格式后,输出的日志会是类似于下面这样的。
16:03:13.083 custom-INFO 7496 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2954 ms
16:03:13.255 custom-INFO 7496 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
也可以通过#logging.pattern.console
单独指定控制台的日志输出格式,通过#logging.pattern.file
指定输出到文件的日志格式。
#logging.pattern.console=console-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n
#logging.pattern.file=file-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n
指定日志输出文件
默认的日志信息只会输出到控制台,可以在application.properties
文件中通过logging.file
指定日志输出文件名。当不指定路径时,默认将在当前路径下创建日志文件。
logging.file=logback.log
指定logging.file
时也可以指定路径,如下则指定了日志内容将写入到/logs
目录下的logback.log
文件。
logging.file=/logs/logback.log
当不指定logging.file
时也可以通过logging.path
指定日志文件输出的路径,这样日志内容将写入到指定目录下的spring.log
文件。如下配置则表示日志内容将写入到/logs/spring.log
文件中。
logging.path=/logs
日志文件压缩
默认情况下每个日志文件写入10MB内容后将重新产生一个新的日志文件,然后将老的进行压缩,可以通过logging.file.max-size=20MB
指定每个日志文件最多写入20MB日志。默认情况下压缩的日志文件将不断产生,没有数量限制,可以通过logging.file.max-history
指定需要保留的历史日志文件数量。
调整日志级别
日志级别可以通过logging.level.logName=logLevel
的形式进行调整,其中根日志级别可以通过logging.level.root
进行调整。比如下面的代码就配置了根日志级别为WARN
,而com.elim
打头的日志级别为INFO
,org.springframework
打头的日志级别为DEBUG
。
logging.level.root=WARN
logging.level.com.elim=INFO
logging.level.org.springframework=DEBUG
自定义配置文件
Spring Boot也允许我们通过定义logback.xml
或logback-spring.xml
文件进行自定义的日志输出配置。Spring Boot建议我们定义日志输出文件为logback-spring.xml
,因为logback.xml
是logback的默认日志文件,会被logback自动加载,直接使用它时有些东西可能Spring Boot还没来得及初始化,并且使用logback.xml
不能使用Spring Boot添加的一些扩展。之后就可以在配置文件中按照logback的规范进行配置了,以下是一个简单的配置,只配置了控制台输出。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
扩展使用springProfile
在logback-spring.xml
中可以使用Spring Boot扩展的<springProfile/>
,它可以用在根元素<configuration/>
元素下的任何位置,用来包裹任何元素。<springProfile/>
用来定义在特定Profile被激活时将使用的特殊配置信息,比如下面的代码中就定义了当dev这个Profile被激活时将定义org.springframework
这个logger的输出级别为DEBUG。
<springProfile name="dev">
<logger name="org.springframework" level="DEBUG"/>
</springProfile>
扩展使用springProperty
在logback-spring.xml
中可以使用Spring Boot扩展的<springProperty/>
,使用它可以把在application.properties
中定义的属性值映射为logback环境中的一个属性,从而可以在logback的上下文使用。下面的配置中定义了属性appName
对应于Spring Boot的Environment中的app.name
(由source属性指定),当未指定时默认使用defaultValue属性指定的TEST
;属性logPath
对应于Spring Boot的Environment中的log.path
,未指定时使用/logs/${appName}.log
,其中的${appName}
又对应于变量appName
的值。定义好的变量可以在logback的配置文件中以${varName}
的形式进行引用。
<configuration>
<springProperty name="appName" source="app.name" defaultValue="TEST"/>
<springProperty name="logPath" source="log.path" defaultValue="/logs/${appName}.log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${appName}-%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
(注:本文基于Spring Boot 2.0.3所写)
相关推荐
日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但是,这丝毫不影响它在任何一个系统中的重要的地位。 为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
—————————————————————————————————— renren-fast是一个轻量级的Spring Boot2.1快速开发平台,其设计目标是开发迅速、学习简单、轻量级、易扩展;使用Spring Boot、Shiro、...
SpringBoot +esapi 实现防止xss攻击 实战代码,真实有效
Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap、Hplus),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告...
技术包括:Spring Boot、Apache Shiro、MyBatis、MySQL、Thymeleaf、Bootstrap、Hplus 功能包括: 用户管理、部门管理、岗位管理、菜单管理、角色管理、字典管理、参数管理、通知公告、操作日志、登录日志、在线用户...
基于Spring cloud和Spring boot 2.x 实现 *项目演示 username:演示用户 password:test 由于没有进行部署,首次加载需要等待1~2分钟,加载完成之后比较流程流畅 好不容易抓到了推免的尾巴,所以最近打算更新...
1.SpringSecurity使用token写入过期时间进行有效期管理(SpringSecurity结合Redis进行token有效期管理请移步我的另一个项目——小区智能管理系统) 2.可以通过角色权限或者指定人员授予菜单权限来实现动态菜单 3引用...
———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。 代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该...
例如,我们只需要把严重的错误日志信息写入日志文件(存储到磁盘),但同时仍然把所有的日志信息输出到控制台中了解springcloud架构可以加求求:三五三六二四七二五九 绑定(Binding) 在之前的例子中,我们已经创建...
本框架自2012年开始用于商业项目,至今已服务于全国各地公司大大小小数千个项目,行业涉及政务、电商、物联网等,...系统自带多级权限体系、日志系统、缓存系统、定时任务、微信管理、CMS管理、beetl模板语言等基础功能
—————— 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键...
QQ1971413919,150r代码+文字图片教程,500r...管理课程——名称、学分、课程描述 选课截止时间 选课结束生成学生点名册 录入成绩 暂存成绩 提交成绩 学生: 个人信息 选课 退选 可视化课表 个人成绩 班级和专业排名