slf4j

依赖冲突解决办法

倖福魔咒の 提交于 2020-03-25 14:54:43
3 月,跳不动了?>>> maven 的价值 Java开发中,jar的管理由maven来管。maven做的事情: jar 统一管理: jar 包统一管理在仓库中。统一管理自然要给每个jar包进行“编址”,它主要采用 groupId+artifactId+version三级寻址方案(当然也有classifier)。统一管理带来好处的同时,带来了麻烦,麻烦是仓库是“单点”,为了避免这个瓶颈,maven 客户端配置可以支持镜像仓库(mirrors)机制。 依赖传递: 当我们的程序依赖A,我们引用A就好;但是实际上A又依赖B和C,我们不用再琐碎的依赖B和C了,这个maven会解析A中的pom.xml,并传递的拉取子级依赖。 “依赖传递”让开发者省去很多琐碎的心思。但它方便的同时,可能带来一些麻烦——依赖冲突。 依赖冲突 所谓“依赖冲突”如下图所示: 依赖冲突.jpg 图中,我们的程序依赖A,那么我们在pom.xml中配置: < dependency > < groupId > org.example </ groupId > < artifactId > A </ artifactId > < version > ${version} </ version > </ dependency > 实际上,A它依赖B和C (这个在A的pom.xml中会有描述)。B再依赖X和Y;C依赖Y和Z

[Java]使用lombok提高编码效率

微笑、不失礼 提交于 2020-03-24 07:34:18
3 月,跳不动了?>>> Lombok简介 Project Lombok makes java a spicier language by adding ‘handlers’ that know >how to build and compile simple, boilerplate-free, not-quite-java code. github上官方是这么描述lombok的: lombok项目通过增加处理程序使我们的java语言更加刺激(简洁和快速)。 先看个简单示例: 我们做java开发的时候,最不少写的就是javabean了,bean字段都需要添加gettter/setter方法,往往我们只能一次又一次的使用ide生成gettter,setter 构造器等等。 lombok是如何帮我们解决这种重复性劳动呢? [java] view plain copy package com.lhy.boot.lombok; import lombok.Getter; import lombok.Setter; @Getter @Setter public class GetterSetterExample1 { private int age = 10 ; private String name = "张三丰" ; private boolean registerd; private

logback.xml 配置详解(1)

喜欢而已 提交于 2020-03-18 15:57:40
某厂面试归来,发现自己落伍了!>>> 1.简介 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。 2011年11月03日,logback 1.0 发布,Java 日志框架。 ###2.加载原理 使用方法,参考: https://my.oschina.net/u/2948232/blog/808350 logback首先会试着查找logback.groovy文件; 当没有找到时,继续试着查找logback-test.xml文件; 当没有找到时,继续试着查找logback.xml文件; 如果仍然没有找到,则使用默认配置(打印到控制台)。 ###3.测试类 package test.com.test; import org.junit.Test; import org.slf4j.Logger; import org

slf4j 和 log4基础入门(Maven配置)

旧巷老猫 提交于 2020-03-16 08:51:57
我们将从四个问题出发。 第一,log4j是什么? log4j是一个日志系统,是Apache的一个开放源代码项目。当然Java日志系统比较丰富,其他常用的日志系统还有java.util.logging、JUL、logback等等。 第二,slf4j又是什么? slf4j(Simple logging facade for Java),即简单日志门面。它不同于上面所说的各种日志系统,不是真正的日志实现,不是具体的日志解决方案。而是一个抽象层,它允许你在后台使用任意一个日志系统(例如log4j)。即slf4j是一个具体日志系统的封装,对外提供统一的API,但其本身并不提供日志实现。 第三,既然已经有各种日志系统了,为什么还要使用slf4j? 问题就是现在有了各种日志系统,因此每个类库使用的日志系统都可能不一样。但lf4j允许你在后台使用任意一个日志系统(例如log4j),即使得你的程序独立于任意特定的日志系统。例如,你的一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了slf4j,你就可以继续使用你的日志系统而无需加载和维护一个新的日志框架。 第四,果真如此好用,那怎么使用? 首先,准备相应的包。 1.slf4j-api-x.x.x

How to use MDC of logback and SLF4J with spring boot to capture unique tracking in the POST request json?

只愿长相守 提交于 2020-03-16 06:06:18
问题 We are using: Spring Boot Slf4J Logback ELK stack Now we want to use MDC to add the unique tracking number, which is provided in the POST request JSON, to every log statement for a given request. I googled some blog posts, those are not useful for me much. Below is the logback.xml which we are using <configuration> <property name="PROJECT_ID" value="template-api"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="net.logstash.logback.encoder.LogstashEncoder

SpringBoot学习笔记-006

南楼画角 提交于 2020-03-14 16:02:55
三、日志 3.1、日志框架 市面.上的日志框架: JUL、JCL、boss-loging、logback、log4j、log4j2. slf4j... 日志门面(日志的抽象层) 日志实现 jCL (Jakarta CommonsLogging) SLF4j(Simple Logging Facade for Java) jboss-logging Log4jJUL (java.tilgging )Log4j2 Logback 左边选-一个门面(抽象层)、右边来选一个实现; 日志门面: SLF4J ; 日志实现: Logback ; SpringBoot:底层是Spring框架, Spring框架默认是用JCL ; SpringBoot 选用SLF4j 和 logback ; 3.2、SLF4j的使用 3.2.1、如何在系统中使用SLF4j http://www.slf4j.org 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法; 给系统里面导入slf4j的jar和 logback的实现jar import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) {

SpringBoot与日志

无人久伴 提交于 2020-03-14 06:15:07
1. 日志框架 日志抽象层: JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging 日志实现: Log4j JUL(java.util.logging) Log4j2 Logback 日志级别,由低到高 logger.trace() logger.debug() logger.info() logger.warn() logger.error() SpringBoot选用 SLF4J 和 Logback ,引入其他框架的时候,需要把该框架依赖的日志框架排除; 2. SLF4J 使用 // 需要导入 slf4j.jar 和 logback.jar import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); } } 2.1 将其他日志框架统一转换为SLF4J 参考资料: Spring Boot 全集 SLF4J user

log4j2之简化封装,告别静态成员变量

淺唱寂寞╮ 提交于 2020-03-09 12:14:46
注 本文是使用 slf4j + log4j2 示例,由于 slf4j 只是一个统一接口包,log4j / log4j2 / logback 等都是有其实现类,所以本文中是以 slf4j 为例。若有朋友坚持不使用 slf4j ,则将代码中 slf4j 相关的都做对应更改即可,并不麻烦。 序 一般情况下,每当我们使用 slf4j 等log组件时,都是在需要记载日志的类中,创建一个静态的 Logger 成员变量,然后调用 debug,info,error 等方法。这就意味着我们每一个要记载日志的类,都需要先定义一个静态的成员变量,这样才打印出正确的前缀(带有类名称) 一、现状 我们以码云中几个热门的java项目为例(下面的代码片段都是 star 超过 500+ 的项目) public class DepartController { private static final Logger logger = Logger.getLogger(DepartController.class); ... method() { logger.info("some things!"); } } @Controller public class LoginController extends BaseController { private static final Logger LOGGER =

springboot05-日志的配置

浪子不回头ぞ 提交于 2020-03-07 09:23:15
SpringBoot选用SLF4j和logback; SLF4j是抽象层,logback实现层 1、SLF4j使用 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用抽象接口类。 给系统里面导入slf4j的jar和logback的实现jar package com . example . demo ; import org . slf4j . Logger ; import org . slf4j . LoggerFactory ; public class HelloWorld { public static void main ( String [ ] args ) { Logger logger = LoggerFactory . getLogger ( HelloWorld . class ) ; logger . info ( "HelloWorld" ) ; } } 每一个日志的实现框架都有自己的配置文件。 使用了slf4j以后, 配置文件还是做成日志实现框架的自己本身配置文件 。 2.遗留问题 a(slf4j+logback):Spring、Hibernate、MyBatis、xxxx:每一个框架的底层又使用了不同的日志框架。 我们要做到的就是:统一日志记录,即使是别的框架和我一起统一使用slf4j输出。 我们来看一下slf4j的legacy