导航:首页 > 源码编译 > slf4j源码介绍

slf4j源码介绍

发布时间:2022-07-18 07:17:14

‘壹’ sources.jar和.jar有什么差别 比如:slf4j-jdk14-1.5.6-sources.jar和slf4j-jdk14-1.5.6.jar

-sources是源码

‘贰’ 求shop++的源代码

主要库
spring-aop-4.0.9.RELEASE
spring-beans-4.0.9.RELEASE
spring-context-4.0.9.RELEASE
spring-context-support-4.0.9.RELEASE
spring-core-4.0.9.RELEASE
spring-expression-4.0.9.RELEASE
spring-jdbc-4.0.9.RELEASE
spring-orm-4.0.9.RELEASE
spring-test-4.0.9.RELEASE
spring-tx-4.0.9.RELEASE
spring-web-4.0.9.RELEASE
spring-webmvc-4.0.9.RELEASE
hibernate-core-4.3.9.Final
hibernate-jpa-2.1-api-1.0.0.Final
hibernate-entitymanager-4.3.9.Final
hibernate-validator-5.1.3.Final
hibernate-search-orm-4.5.3.Final
lucene-core-3.6.2
freemarker-2.3.22
ehcache-core-2.6.10
ehcache-web-2.0.4
shiro-core-1.2.3
shiro-web-1.2.3
c3p0-0.9.2.1
commons-lang-2.6
commons-beanutils-1.9.2
commons-collections-3.2.1
commons-io-2.4
commons-net-3.3
commons-fileupload-1.3.1
commons-codec-1.10
commons-email-1.3.3
commons-compress-1.9
junit-4.10
httpclient-4.3.5
httpcore-4.3.2
slf4j-api-1.7.7
jcl-over-slf4j-1.7.7
logback-core-1.1.2
logback-classic-1.1.2
dom4j-1.6.1
jackson-core-2.4.3
jackson-databind-2.4.3
jackson-annotations-2.4.3
IKAnalyzer2012_u6

‘叁’ slf4j的介绍

SLF4J,即简单日志门面(Simple Logging Facade for java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

‘肆’ 如何配置SLF4J不同的日志实现

SLF4J是一套简单的日志外观模式的Java API,帮助在项目部署时对接各种日志实现。

LogBack在运行时使用JMX帮助修改日志配置,在生产状态下无需重启应用程序。


SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。

它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。

SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。

如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。


Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。



由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码。



注意一个重要的特性,Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以从JMX控制台直接操作,无需重启应用程序。

‘伍’ 当在类上写了一个@Slf4j注解后,类中为何就有了一个log对象源码是怎么实现的

这个实现,要分以下几个步骤。

  1. 你要知道:@(注解)

  2. 你要知道:代理

知道这两个,大致的思路就会有了。java代码运行到main方法,会扫描所有的类。通过反射查询到【有@slf4j的类】。然后通过代理,来增强有【有@slf4j的类】(即,在代理类中,创建log对象)

‘陆’ 哪个版本springboot依赖slf4j-api 1.8.0

在开发中,我们经常使用System.out.println()来打印一些信息,但是这样不好,因为大量的使用System.out会增加资源的消耗。我们实际项目中使用的是slf4j的logback来输出日志,效率挺高的,SpringBoot提供了一套日志系统,logback是最优的选择。
.slf4j介绍
引用网络里的一段话:
SLF4J,即简单日志门面(SimpleLoggingFacadeforJava),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
这段的大概意思是:你只需要按统一的方式写记录日志的代码,而无需关心日志是通过哪个日志系统,以什么风格输出的。因为它们取决于部署项目时绑定的日志系统。例如,在项目中使用了slf4j记录日志,并且绑定了log4j(即导入相应的依赖),则日志会以log4j的风格输出;后期需要改为以logback的风格输出日志,只需要将log4j替换成logback即可,不用修改项目中的代码。这对于第三方组件的引入的不同日志系统来说几乎零学习成本,况且它的优点不仅仅这一个而已,还有简洁的占位符的使用和日志级别的判断。
正因为sfl4j有如此多的优点,阿里巴巴已经将slf4j作为他们的日志框架了。在《阿里巴巴Java开发手册(正式版)》中,日志规约一项第一条就强制要求使用slf4j:
1.【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
“强制”两个字体现出了slf4j的优势,所以建议在实际项目中,使用slf4j作为自己的日志框架。使用slf4j记录日志非常简单,直接使用LoggerFactory创建即可。

‘柒’ 如何编译Flume-NG源码之最新1.5.2版本

方法

源码下载
http://www.neoye.com/3446.html apache-flume-1.5.2-src.tar.gz
解压至C盘根目录
建议放到C盘根目录中,测试时我是放到这里,其它目录不保证可以顺利通过,可参考测试。
运行mvn
进入c:\apache-flume-1.5.2目录,运行mvn install -DskipTests -Dtar注意:网上有其它参考材料说要先将注释掉hbase和hadoop-test相关的依赖,我没这样做,没问题。
可能根据环境不同有差异。不过大家遇到与hbase和hadoop-test相关的错误可以进行参考更正。
部分代码参考
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>${hbase.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>${hadoop.version}</version>
</dependency>
典型问题1处理[重点]
1、error reading error in opening zip file
[ERROR] error: error reading
/org/elasticsearch/elasticsearch/0.90.1/elasticsearch-0.90.1.jar;
error in opening zip file
[ERROR] -> [Help 1]
出现这个错误可能是已经下载的这个jar存在问题。到本地库中找到对应的jar所在位置,然后将其删除,重新运行mvn命令可解决。以上这个错误不一定是elasticsearch的jar找不到,其他jar也可能出现这个问题。
典型问题2处理[重点]
flume-ng-morphline-solr-sink出现问题,对应的kite-morphline没有找到依赖。要使用这个flume-ng-morphline-solr-sink做些文章的,所以这里出问题必须解决。
[ERROR] Failed to execute goal on project flume-ng-morphline-solr-sink: Could no
t resolve dependencies for project org.apache.flume.flume-ng-sinks:flume-ng-morp
hline-solr-sink:jar:1.5.2: Failed to collect dependencies for [org.apache.flume:
flume-ng-core:jar:1.5.2 (compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.
kitesdk:kite-morphlines-all:pom:0.12.0 (compile?), org.slf4j:jcl-over-slf4j:jar:
1.6.1 (provided), org.apache.solr:solr-test-framework:jar:4.3.0 (test), org.kite
sdk:kite-morphlines-solr-core:jar:tests:0.12.0 (test), junit:junit:jar:4.10 (tes
t)]: Failed to read artifact descriptor for org.kitesdk:kite-morphlines-all:pom:
0.12.0: Could not transfer artifact org.kitesdk:kite-morphlines-all:pom:0.12.0 f
rom/to cdh.repo (https://repository.cloudera.com/artifactory/cloudera-repos): Co
nnection to https://repository.cloudera.com refused: Connection timed out: conne
ct -> [Help 1]
提示的错误是连接cloudera的中央库超时了,看似是网络问题。其实解决了网络问题还有另外一个重大问题就是版本对应不上。查看了一下flume-ng-morphline-solr-sink的pom.xml文件,对应查找的kite.version是0.12.0版本。但其实cloudera的中央库上也没有这个版本了。所以解决办法是: A、将kite.version的版本改成0.15.0.修改进入源码根目录找到pom.xml文件,找到<kite.version>0.15.0</kite.version>将0.12.0修改成0.15.0 B、找到<dependenciesManagement>标签,将下面代码插入到dependency中。
<dependency>
<groupId>org.kitesdk</groupId>
<artifactId>kite-morphlines-all</artifactId>
<version>${kite.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
</exclusion>
</exclusions>
<type>pom</type>
<optional>true</optional>
</dependency>
C:\apache-flume-1.5.2-src\flume-ng-sinks\flume-ng-morphline-solr-sink目录,打开pom.xml文件,将所有${kite.version}替换成0.15.0。上一步的目的是如果工程引用了org.kitesdk的话,则不使用这个版本。可以自定义其引用的版本。我在实际应用中就遇到了这两个主要的问题。当然其中还有一些主要是repository连接不上的问题(公司比较烂,网络有限制)。想各种办法从网上先down下来再上传到私服解决。最后提示”Build Success”编译成功了,见下图。

编译成eclipse工程
mvn eclipse:eclipse至此,使用eclipse导入工程即可进行开发了。
我这里还遇到了两个flume-dataset-sink的单体测试中有一个方法编译不过去的问题。因为我没用到这个sink所以也没去解决。另一个问题是可能在install时可能会遇到Missing artifact jdk.tools:jdk.tools:jar:1.6的问题。
解决办法:在flume-ng-morphline-solr-sink的pom.xml文件中添加一个依赖。
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
至于jdk的版本和系统路径根据实际的开发环境的环境变量而定,其他都没问题。

‘捌’ GitHub上面有哪些经典的java框架源码

阅读全文

与slf4j源码介绍相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:576
python员工信息登记表 浏览:375
高中美术pdf 浏览:157
java实现排列 浏览:511
javavector的用法 浏览:979
osi实现加密的三层 浏览:230
大众宝来原厂中控如何安装app 浏览:910
linux内核根文件系统 浏览:240
3d的命令面板不见了 浏览:521
武汉理工大学服务器ip地址 浏览:144
亚马逊云服务器登录 浏览:521
安卓手机如何进行文件处理 浏览:69
mysql执行系统命令 浏览:925
php支持curlhttps 浏览:142
新预算法责任 浏览:443
服务器如何处理5万人同时在线 浏览:247
哈夫曼编码数据压缩 浏览:424
锁定服务器是什么意思 浏览:383
场景检测算法 浏览:616
解压手机软件触屏 浏览:348