V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fangcan
V2EX  ›  Java

有个 maven 项目日志打印的问题请教下 v 友们

  •  
  •   fangcan · 2020-06-13 12:33:55 +08:00 · 1576 次点击
    这是一个创建于 1660 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目里面使用了 mybatis

    1. 当项目里面没有设置依赖 logback 和 slf4j 时, mybatis 相关的日志(比如 sql 等)没有打印出来,也没有报错。
    2. 在 pom 里面设置依赖 logback 和 slf4j 后就能打印出 mybatis 的日志了

    疑问点:

    1. 为什么我自己的 pom 里面不配置日志相关依赖就不打印 mybatis 的日志但是也不报错?
    2. 依赖包之间日志工具是怎么样的一个关系?不同的依赖包使用不同的日志工具会有怎样的影响?

    》表达的不太好,有疑问可以评论下 感谢

    附上 dependencies

    <dependencies>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>4.4.5</version>
            </dependency>
            <!-- jsoup Java HTML Parser Java 版的 Html 解析工具 https://jsoup.org/-->
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>1.11.3</version>
            </dependency>
            <!-- Servlet -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!--spring 相关-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
            <!--数据库事务管理-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.18.RELEASE</version>
            </dependency>
    
    
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.3.2</version>
            </dependency>
    
            <!--mybatis-->
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
    
            <!-- springmvc rest api responseBody 需要使用 转换器使用-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.10</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- log start -->
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.26</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>
          <!--  <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-access</artifactId>
                <version>${logback.version}</version>
            </dependency>-->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
    
        </dependencies>
    
    5 条回复    2020-06-13 21:04:50 +08:00
    arrow8899
        1
    arrow8899  
       2020-06-13 17:31:34 +08:00
    https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/logging/LogFactory.java
    你看下代码就知道了,mybatis 写日志时会依次尝试 slf4j, commonslogging,log4j 等日志库,如果没有找到对应实现,就走 noLogging 的逻辑,不写日志。
    arrow8899
        2
    arrow8899  
       2020-06-13 17:33:45 +08:00
    一个项目内可以有多种写日志的实现,不会互相影响。
    fangcan
        3
    fangcan  
    OP
       2020-06-13 21:03:29 +08:00
    @arrow8899 感谢 确实是有这个方法,不过没看明白,求指教下
    fangcan
        4
    fangcan  
    OP
       2020-06-13 21:03:36 +08:00
    fangcan
        5
    fangcan  
    OP
       2020-06-13 21:04:50 +08:00
    @arrow8899 下面是具体的方法,我看尝试的每个方法都是传入了 mybatis 的对于不同的 log 的实现,那不是第一个方法就能成立了么?
    private static void setImplementation(Class<? extends Log> implClass) {
    try {
    Constructor<? extends Log> candidate = implClass.getConstructor(String.class);
    Log log = candidate.newInstance(LogFactory.class.getName());
    if (log.isDebugEnabled()) {
    log.debug("Logging initialized using '" + implClass + "' adapter.");
    }
    logConstructor = candidate;
    } catch (Throwable t) {
    throw new LogException("Error setting Log implementation. Cause: " + t, t);
    }
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:31 · PVG 04:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.