logback

SpringBoot profile运用

非 Y 不嫁゛ 提交于 2020-02-29 09:41:13
摘要: Spring Boot使用@Profile注解可以实现不同环境下配置参数的切换,任何@Component或@Configuration注解的类都可以使用@Profile注解。 例如: @Configuration @Profile("production") public class Produc... Spring Boot使用 @Profile 注解可以实现不同环境下配置参数的切换,任何 @Component 或 @Configuration 注解的类都可以使用 @Profile 注解。 例如: @Configuration @Profile ( "production" ) public class ProductionConfiguration { // ... } 通常,一个项目中可能会有多个profile场景,例如下面为test场景: @Configuration @Profile ( "test" ) public class TestConfiguration { // ... } 在存在多个profile情况下,你可以使用 spring.profiles.active 来设置哪些profile被激活。 spring.profiles.include 属性用来设置无条件的激活哪些profile。 例如,你可以在 application.properties

Java日志介绍(3)-Logback

别说谁变了你拦得住时间么 提交于 2020-02-28 11:32:03
Logback 继承自Log4j,它建立在有十年工业经验的日志系统之上。它比其它所有的日志系统更快并且更小,包含了许多独特并且有用的特性。 1、配置 1.1、加载配置 Logback能够在初始化期间自动查找配置文件进行配置;按照优先级查找配置文件直到找到,优先级如下: 1、查找系统属性logback.configurationFile对应的配置文件 2、在classpath下查找logback-test.xml 3、在classpath下查找logback.groovy 4、在classpath下查找logback.xml 5、通过JDK提供的ServiceLoader工具在类路径下寻找文件META-INFO/services/ch.qos.logback.classic.spi.Configurator,该文件的内容为实现了Configurator接口的实现类的全限定类名 6、如果以上都没有成功,logback会通过BasicConfigurator为自己进行配置,并且日志将会全部在控制台打印出来。 1.2、自动更新配置 在 <configuration> 标签上添加 scan=true 属性,可以让Logback自动定期扫描配置文件;默认一分钟扫描一次配置文件, <configuration> 标签上的 scanPeriod 属性可以指定扫描周期。扫描周期的时间单位可以是毫秒

架构师必知必会:Java内置的控制反转机制”Service Provider”

纵然是瞬间 提交于 2020-02-28 11:14:58
前言 Java统治服务器编程领域多年还未有退位趋势,以IoC(控制反转)思想为核心的Spring功不可没。大多数时候,我们都可以使用Spring框架来实现我们的依赖注入,但仍有很多场景,我们期望自己的代码有更少的依赖、适应更多的场景,比如跨Android和服务端、跨JVM语言的组件拼装。 其实从Java6开始已经提供了一套依赖注入标准“Service Provider”和相应的工具”ServiceLoader”来实现我们自己的控制反转,且其已经广泛应用在JDK的扩展性设计之中(如:脚本引擎ScriptEngine, 字符集Charset, 文件系统FileSystems, 网络通讯NIO),并越来越多地被其它开源组件所使用(如:Web标准Servlet3.0, 通用日志接口slf4j-api:1.3),Java9进一步对“Service Provider”进行扩展实现了Java的模块化。所以”Service Provider”机制是Java越来越重要的基础知识之一。 容我带领各位,通过JDK文档和源码来一步步了解”Service Provider”,进而掌握通过Java自带能力零依赖实现自己的动态依赖注入的方法,或按Java标准来扩展JDK、日志、Http服务的能力。 “Service Provider“标准 ”Service Provider

Spring Boot日志之Logback(三)—— 多环境配置

限于喜欢 提交于 2020-02-28 09:41:19
多数人在开发过程中,会在Windows系统上进行开发,但是对于测试和生产环境,一般都采用的是Linux系统。如何在多环境之间切换而不需要频繁的修改Logback相关配置呢?这就要依赖于Logback多环境配置了。 Logback多环境配置 Logback多环境配置的方法有很多种,这里只说一下自己用到的两种(前提是Logback的配置信息在logback-spring.xml文件中配置)。 通过 springProfile 标签控制 springProfile 标签,有一个属性 name ,其值为指定的环境名。用下面的例子来说明: <configuration scan="false" debug="true"> <contextName>logback</contextName> <property name="log.path" value="./logs"/> <property name="log.pattern" value="%-4relative \[%thread\] %-5level %logger{35} - %msg %n"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${log.pattern}</pattern>

Spring Boot日志之Logback(四)—— 日志等级继承

人盡茶涼 提交于 2020-02-28 08:52:07
在日常的开发中,Logback配置文件中一般都会定义多个 logger ,那它们之间互相的关系又是什么呢? 命令层次结构 首先声明一下 logger 命令层次结构: 如果一个 logger 的名字加上一个 . 作为另一个 logger 名字的前缀,那么该 logger 就是另一个 logger 的祖先。如果一个 logger 与另一个 logger 之间没有其它的 logger ,则该 logger 就是另一个 logger 的父级。 这段话,可能比较抽象,那么举个例子来说: <logger name="x" level="DEBUG"/> <logger name="x.y" level="DEBUG"/> <logger name="x.y.z" level="DEBUG"/> 例子中,定义了 x , x.y , x.y.z 三个 logger ,其中 x 是 x.y , x.y.z 的祖先,但是由于 x 与 x.y 之间不存在其它的 logger ,所以 x 也是 x.y 的父级。 PS: 这里需要强调一下,代码中创建的 logger 和配置文件中定义的 logger 是相同的 ,如下面定义了名为 x.y.z 的 logger,和上面声明里的 x.y.z 相同: private static Logger logger = LoggerFactory.getLogger("x

「故事系列」小故事说清楚什么是日志框架

这一生的挚爱 提交于 2020-02-28 07:00:33
有天上飞的概念,就要有落地的实现 大哥大姐新年好,点赞转发不要少 文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址 Lu_JavaNodes ,包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦。 本文阅读技术要求:见过日志 没见也不要慌,如下图,这就是日志,好了,你见过了。 一个小故事说清楚日志框架 日志的作用 记录系统中的操作 记录系统的运行状况 系统错误时候,根据日志分析原因 故事开始 在一家IT企业中,项目经理虎大力(龙套) 正在指挥 程序员鹿小明(精英龙套)开发一个大型的增删改查项目。为了开发这个项目。项目组仅有的程序员鹿小明每天工作996 故事进入 V1.0 环节 one day,虎大力给鹿小明提出来一个新的需求,为了更好的进行公司的信息化建设,虎大力想要看到代码执行的情况,执行到某个业务的时候在控制台有所表示,例如:执行到查询方法的时候,需要在控制台上出现,这是一个打印方法的信息。 鹿小明一想,这好办啊,本来自己为了调试测试方便就写过很多打印语句,现在无非更多而已。于是就加班加点在所有的增删改查方法中都写了 System.out.println() 打印语句。顺利完成了这个工作。 故事进入 V2.0 环节 一段时间岁月静好 one day,虎大力找到鹿小明:你这个代码里面 System.out.println() 太多了

Spring 5 how to use Log4jConfigListener

梦想的初衷 提交于 2020-02-28 06:09:48
问题 In the past, i used to spring 4.3.8 version, i used to Log4j config in web.xml like below code, <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:/log4j-${spring.profiles.active}.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> Currently, i trying to use spring 5.0.7 version but, i can't use Log4jConfigListener i realized Log4jConfigListener is not exist in spring 5.x

Spring 5 how to use Log4jConfigListener

柔情痞子 提交于 2020-02-28 06:09:13
问题 In the past, i used to spring 4.3.8 version, i used to Log4j config in web.xml like below code, <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:/log4j-${spring.profiles.active}.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> Currently, i trying to use spring 5.0.7 version but, i can't use Log4jConfigListener i realized Log4jConfigListener is not exist in spring 5.x

Spring Boot日志之Logback(二)—— 日志输出格式

余生颓废 提交于 2020-02-27 23:01:23
上一篇 中讲解了如何配置Logback,接下来讲解一些其它细节方面的东西。 Logback日志输出格式 先看下最简单的Logback的配置文件: <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative \[%thread\] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT"/> </root> </configuration> 这里有一段日志输出格式 %-4relative \[%thread\] %-5level %logger{35} - %msg %n ,里面每个转译字符的含义又是什么呢? 转译字符的含义 先讲解下Logback中各转译字符的含义(以下所有的转译字符前需要使用 % 才生效,否则只是普通的字符串)。 转译字符: c{length} 、 lo{length} 、 logger{length} 这三个转译字符具有相同的作用,用于输出logger的名字来作为日志事件的来源,有且仅有一个长度的参数

12、日志系统解析

我只是一个虾纸丫 提交于 2020-02-27 21:12:59
1.1、日志介绍 日志分为日志门面和日志实现,日志实现是日志的门面的具体实现. 日志门面框架指的是日志实现的抽象层,定义log.info、log.error等方法,日志的门面框架主要与两个,JCL和SLF4J 日志实现指的是具体的日志功能实现,有JCL、Log4j、Logback、Log4j2 最佳组合:slf4j+logback(SpringBoot使用)或者slf4j+log4j2 // 我们可以看下,slf4j的Logger是一个接口,里面定义的方法是info、error等 package org.slf4j; public interface Logger { // 而Logback实现了Logger接口 package ch.qos.logback.classic; public final class Logger implements org.slf4j.Logger, LocationAwareLogger, AppenderAttachable<ILoggingEvent>, Serializable { 1.2、日志配置 // 待补充 1.3、日志实践 来源: oschina 链接: https://my.oschina.net/liwanghong/blog/3169053