• Log4j2的一些记录


    1.使用Log4jdbc-log4j2打印mybatis的sql语句

    一、maven依赖

    <!-- 日志文件管理包 -->
    <!-- log start -->
    <!-- log4j2的包,注意版本问题,lo4j-slf4j-impl对lo4j2包有版本要求,如果这里的包为2.0版本会出错,找不到有些class -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.3</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.3</version>
        <scope>compile</scope>
    </dependency>
    <!-- log4jdbc监控jdbc层 -->
    <dependency>
        <groupId>org.bgee.log4jdbc-log4j2</groupId>
        <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
        <version>1.16</version>
    </dependency>
    <!-- slf4j相关api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <!-- slf4j的log4j实现包 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.1</version>
    </dependency>
    <!-- log end --> 

    二、相关配置文件

    log4jdbc.log4j2.properties

    log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

    jdbc驱动和url修改为

    db.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    db.url=jdbc:log4jdbc:mysql://localhost:3306/wechat_talk?useUnicode=true&characterEncoding=utf-8

    log4j的相关配置xml或properties

     log4j2.xml(部分)

    <!-- sql 以及耗费的执行时间 -->
    <logger name="jdbc.sqltiming" level="INFO" additivity="false"></logger>
    <!-- 执行之后的返回结果 -->
    <logger name="jdbc.resultsettable" level="INFO"></logger>
    <!-- 只有sql -->
    <logger name="jdbc.sqlonly" level="OFF"></logger>
    <logger name="jdbc.audit" level="OFF"></logger>
    <logger name="jdbc.resultset" level="OFF"></logger>
    <!-- 能看到数据库的连接数 -->
    <logger name="jdbc.connection" level="OFF"></logger>

     

     

    2.关于LogManager.getLogger(),以及LogManager.getLogger(this),LogManager.getLogger(Class.class),LogManager.getLogger(Class.class.getName()),LogManager.getLogger(this.getClass);

    LogManager.getLogger(),使用反射获得调用该方法的类,以这个类的全类名作为loggerName。

    其他的根据传入的参数决定loggerName。

    有点需要注意的是,如果他们继承了一个父类,logger在父类中定义时。LogManager.getLogger(),获得的是以父类全类名指定的logger。其他的都是loggername都是子类的全类名。

    原因可能是在于继承的一些特性,暂时没搞明白,等待学习。

     

  • 相关阅读:
    moment上手
    项目技术小结
    网站开发 你需要知道的几件事
    git分享
    OllyDBG 快捷键
    OD常用断点
    寄存器各自的作用
    OD使用技巧
    工作错误记录执行java报错 编码GBK的不可映射字符
    MIUI优化设置
  • 原文地址:https://www.cnblogs.com/zaixiuxing/p/5028846.html
Copyright © 2020-2023  润新知