码迷,mamicode.com
首页 > 编程语言 > 详细

java 组件开发中的日志记录问题

时间:2018-12-05 20:57:06      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:问题   sse   细节   直接   一个   pid   开发者   自己的   static   

今天帮别人写封装几个url 请求,打成jar 包,可以以java接口的方式提供给外部访问。 

遇到两个问题: 

1. 是否把依赖的jar包也 打入 我要生成的jar包中,如果你不打入,别人直接调用接口会报错。如果你打入可能会和使用该jar包的项目发生冲突,因为别人可能已经引入了相关jar包。

   自己可以根据要求来定: 如果不打就需要把jar和pom文件都提供给需求提出者。 如果需要可以使用maven 插件 maven-assembly-plugin. 

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>com.fds.App</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </plugin>
然后使用执行maven 命令
package assembly:single  就会生成一个  后缀为 -jar-with-dependency.jar 的包。。 

 

2 . 组件开发中如何记录日志

  我们知道java 开发要引入很多jar 包,每个jar包都需要日志。 而在java 世界中有很多日志组件,比如 log4j, logback 等。 

  如果每个jar包开发者都弄一套自己的日志系统,那引入这些jar 把项目岂不是乱套了。  

  于是网上百度了下:

    原来我们在组件开发的时候只需要一个门面就行。就相当于一套完备的日志接口。

    然后我们使用这个门面做日志处理。然后再由具体的组件引用者决定使用具体的哪个日志系统。

    所以我们在使用这些日志组件时需要提供一个具体的日志实现。

  目前的门面: common-logging  ,  slf4j  , JCL(这个是最初的门面)

  那么这些门面是怎么知道用哪个具体的日志实现呢???

  答案: 网上找的,具体没研究, 。大致意思是门面会在 classpath 下查找StaticLoggerBinder,每个具体日志实现都会提供一个StaticLoggerBinder 类,  并且提供一个实现类,由该类来产生Logger 实例。然后传递给门面,

    实际上门面就是通过这个实现类来打印日志的。

具体细节请百度。

 

  

 

java 组件开发中的日志记录问题

标签:问题   sse   细节   直接   一个   pid   开发者   自己的   static   

原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10072429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!