zoukankan      html  css  js  c++  java
  • java 组件开发中的日志记录问题

    今天帮别人写封装几个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 实例。然后传递给门面,

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

    具体细节请百度。

      

  • 相关阅读:
    结构体排序中sort的自定义函数cmp()
    c++中清空输入缓冲区的方法(做cf的时候炸了)
    求第k小的数
    数论—约数
    HDU递归求解专题练习
    62、rdp报表
    61、inputTree
    60、list集合的各种姿势的排序
    59、table移动高亮
    13、docker安装nginx
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10072429.html
Copyright © 2011-2022 走看看