- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Spring Boot系列教程之日志配置由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
前言 。
日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但是,这丝毫不影响它在任何一个系统中的重要的地位.
为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生产环境一旦出现问题,预警系统就会通过邮件、短信甚至电话的方式实施多维轰炸模式,确保相关负责人不错过每一个可能的bug.
预警系统判断疑似bug大部分源于日志。比如某个微服务接口由于各种原因导致频繁调用出错,此时调用端会捕获这样的异常并打印error级别的日志,当该错误日志达到一定次数出现的时候,就会触发报警.
1
2
3
4
5
6
7
8
9
|
try
{
调用某服务
}
catch
(exception e) {
log.error(
"错误信息"
, e);
}
|
所以日志至关重要,这篇就来介绍下在spring boot如何配置日志.
spring boot默认日志系统 。
spring boot默认使用logback日志系统,如果不需要更改为其他日志系统如log4j2等,则无需多余的配置,logback默认将日志打印到控制台上.
如果要使用logback,原则上是需要添加dependency依赖的 。
1
2
|
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-logging</artifactid></pre>
|
但是因为新建的spring boot项目一般都会引用spring-boot-starter或者spring-boot-starter-web,而这两个起步依赖中都已经包含了对于spring-boot-starter-logging的依赖,所以,无需额外添加依赖.
我们基于《没做过大项目,但我会建大项目》中创建的项目,启动springboot-demo项目,可以看到打印的日志信息如下.
以上至默认配置启动下的日志显示情况,如果需要做一些定制的日志配置比如将日志存储到文件等应该如何配置,下面就通过几个小问题来看看spring boot下是如何解决这些问题的.
如何在项目中打印日志 。
新建一个配置类logconfig,注入一个bean,并在方法中打印日志 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package
com.jackie.springbootdemo.config;
import
com.jackie.springbootdemo.model.person;
import
org.slf4j.logger;
import
org.slf4j.loggerfactory;
import
org.springframework.context.annotation.bean;
import
org.springframework.context.annotation.configuration;
@configuration
public
class
logconfig {
private
static
final
logger log = loggerfactory.getlogger(logconfig.
class
);
@bean
public
person logmethod() {
log.info(
"==========print log=========="
);
return
new
person();
}
}
|
运行springbootdemoapplication,可以看到控制台的日志 。
spring boot默认的日志级别为info,这里打印的是info级别的日志所以可以显示.
很多开发者在日常写private static final logger log = loggerfactory.getlogger(logconfig.class);总觉得后面的logconfig.class可有可无,因为随便写个其他类也不会报错,但是准确编写class信息能够提供快速定位日志的效率.
我们看到打印的日志内容左侧就是对应的类名称,这个是通过private static final logger log = loggerfactory.getlogger(logconfig.class);实现的.
如果将logconfig.class换成xxx.class,输出日志就会显示对应的xxx类名。这样声明的好处就是方便定位日志.
如何将日志信息存储到文件 。
在本机环境,我们习惯在控制台看日志,但是线上我们还是要通过将日志信息保存到日志文件中,查询日志文件即可.
那么应该如何配置才能将日志信息保存到文件呢?
在我们创建的springboot-demo项目中,resources目录下有个application.properties文件(如果是application.yml文件也是同样的道理,只是采用的不同的编写风格而已)。添加如下配置 。
1
2
|
logging.path=/users/jackie/workspace/rome/
logging.file=springbootdemo.log
|
logging.path 。
该属性用来配置日志文件的路径 。
logging.file 。
该属性用来配置日志文件名,如果该属性不配置,默认文件名为spring.log 。
运行springbootdemoapplication 。
可以看到在指定路径下生成了springbootdemo.log文件,该文件内容和控制台打印内容一致.
如果注释logging.file=springbootdemo.log则生成默认文件名spring.log 。
如何设置日志级别 。
日志级别总共有tarce < debug < info < warn < error < fatal ,且级别是逐渐提供,如果日志级别设置为info,则意味trace和debug级别的日志都看不到.
上例中我们打印了一个info级别的日志,因为spring boot默认级别就是info,如果我们改为warn,是否还能看到这行日志信息.
logging.level 。
该属性用于配置日志级别.
在applicaition.properties中添加 。
1
|
logging.level.root=warn
|
这里是用的root级别,即项目的所有日志,我们也可以使用package级别,即指定包下使用相应的日志级别,下面再看.
启动springbootdemoapplication 。
你没看错,这个项目是成功启动了,但是几乎没有内容,这是因为之前打印的日志级别都是info,这里设置为warn,所以info级别的日志都不显示.
这里我们可以改动root还是info级别,将指定包下的日志级别设置为warn 。
1
2
3
|
logging.level.root=info
logging.level.com.jackie.springbootdemo.config=warn
|
启动springbootdemoapplication 。
可以看到除了logconfig类中的info级别的日志没有打印出来,其他的info级别的日志都正常输出了.
如何定制自己的日志格式 。
在application.properties中添加 。
1
2
|
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
|
logging.pattern.console 。
该属性用于定制日志输出格式.
上述配置的编码中,对应符号的含义如下 。
%d{hh:mm:ss.sss}——日志输出时间 。
%thread——输出日志的进程名字,这在web应用以及异步任务处理中很有用 。
%-5level——日志级别,并且使用5个字符靠左对齐 。
%logger- ——日志输出者的名字 。
%msg——日志消息 。
%n——平台的换行符 。
启动springbootdemoapplication 。
限于篇幅,还有相关特性,这里不一一陈述了.
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我的支持.
原文链接:https://www.cnblogs.com/bigdataZJ/p/springboot-log.html 。
最后此篇关于Spring Boot系列教程之日志配置的文章就讲到这里了,如果你想了解更多关于Spring Boot系列教程之日志配置的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我只是不喜欢 Logback 的 XML 或 Groovy 配置,而更喜欢用 Java 进行配置(这也是因为我将在初始化后的不同时间在运行时更改配置)。 似乎对 Logback 进行 Java 配置的
我的 sphinx 配置是: ================================ config/sphinx.yml development: bin_path: "/usr/loc
我们计划在生产服务器中部署我们的系统。我有兴趣了解更多有关优化网站性能的信息。 Sitecore 有哪些优化建议? (缓存,网络配置中的其他设置) 我们可以在 IIS 中做哪些优化? 找不到关于这些主
我有一个 Django 应用程序,可以处理网站的两个(或更多)部分,例如网站的“admin”和“api”部分。我还为网站的其余部分提供了普通的 html 页面,其中不需要 Django。 例如,我希望
我刚刚开始研究Docker。我有一个 Node 应用程序,可以调整大小和图像,然后在完成后向 aws 发送 SQS 消息。我已成功创建应用程序的 docker 镜像,并从本地计算机复制它,但遇到了无法
如何配置 checkstyle(在 Ant nt Maven 中)任务?我尝试了一点,但没有正确收到报告。这是我的 Ant 脚本。
我正在使用 Quartz 和 Spring 框架重写一个遗留项目。原始配置是 XML 格式,现在我将其转换为 Java Config。 xml 配置使用 jobDetail 设置触发器 bean 的作
tl;rd: 使用主键对数据库进行分区 索引大小问题。 数据库大小每天增长约 1-3 GB 突袭设置。 您有使用 Hypertable 的经验吗? 长版: 我刚刚建立/购买了一个家庭服务器: 至强 E
在安装 gcp 应用程序后,我们尝试使用 GCP 的图形 api 配置 Azure Active Directory saml 配置。我们正在遵循相同的 AWS graph api saml 设置 U
我刚刚了解了 spring security 并想使用 java hibernate 配置连接到数据库,但我发现的示例或教程很少。我通过使用 xml 配置找到了更多。我在这里使用 Spring 4.0
我们最近切换到 Java 8 以使用 java.time API(LocalDate、LocalDateTime,...)。因此,我们将 Hibernate 依赖项更新到版本 4.3.10。我们编写了
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《quarkus实战》系列的第六篇,咱
我是 NGINX 的新手,我正在尝试对我们的 ERP 网络服务器进行负载平衡。我有 3 个网络服务器在由 websphere 提供支持的端口 80 上运行,这对我来说是一个黑盒子: * web01.e
我们想使用 gerrit 进行代码审查,但我们在 webview 中缺少一些设置。 是否可以禁止提交者审查/验证他们自己的 提交? 是否有可能两个审稿人给 +1 一个累积它 到+2,以便可以提交? 谢
配置根据运行模式应用于 AEM 实例。在多个运行模式和多个配置的情况下,AEM 如何确定要选择的配置文件?假设以下配置在 AEM 项目中可用, /apps /myproject - con
我正在使用 Neo4j 服务器。我遇到了负载相对较低的问题。但是,响应时间相当长。我认为为请求提供服务的线程数太少了。有没有办法调整为 HTTP 请求提供服务的线程池的大小。那可能吗? 最佳答案 线程
我在/etc/default/celeryd 中有以下配置 CELERYD_NODES = "worker1 worker2 worker3" CELERYD_CHDIR = "path to pro
Plone 在其页面中显示来 self 的母语(巴西葡萄牙语)的特殊字符。但是,当我使用我创建的 spt 页面时,它会显示转义序列,例如: Educa\xc3\xa7\xc3\xa3o 代替 Educ
我正在尝试开始使用 Emacs/Clojure。安装 emacs 扩展的正确方法是什么。我正在尝试安装以下插件: https://bitbucket.org/kotarak/vimclojure 我已
我有一个简单的 C 项目结构: proj/ src/ docs/ build/ tests/ lib/ 尝试编写合适的 CMake 文件。 到目前为止我的尝试:http://pas
我是一名优秀的程序员,十分优秀!