一. Logback与p6spy

一. LogBack配置

  1. 配置pom.xml
    xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.13</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.9</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.0.9</version> </dependency>

  2. 加入logback.xml
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>


    logs/haha.log


    logs/haha.log_%d{yyyy-MM-dd}_%i.log.zip
    5

    100



    %d [%thread] %level %logger(line:%line) - %msg%n




    %d [%thread] %level %logger(line:%line) - %msg%n




     <root level="DEBUG">  <!--root的level:代码中log的级别大于此处的level时,才触发appender(全局设置)-->
         <appender-ref ref="STDOUT" />
     </root>


    ```

  3. 用slf4j调用日志打印组件

    (1) slf4j-api这个包调用默认logback的class进行日志打印
    (2)slf4j的LoggerFactory.getlogger(),会生成LogBack的LoggerContext,进行日志打印

  4. 更改logback.xml读取位置
    logback默认读取classpath下的logback.xml, 改变文件位置, 在项目启动时执行配置
    ```java
    public class LogbackLocation implements InitializingBean {

     private Logger logger = LoggerFactory.getLogger("LogbackLocation");
    
     public void afterPropertiesSet() throws Exception {
         new LogBackLocationUtil("etc\\logback.xml").configLogger();
         logger.info("Logger back file success");
    
     }

    }
    java
    public class LogBackLocationUtil {

     private String fileLocation;
     private LoggerContext context;
    
     public LogBackLocationUtil(String fileLocation) {
         this.fileLocation = fileLocation;
     }
    
     public void configLogger( ){
         this.context = (LoggerContext) LoggerFactory.getILoggerFactory();
         JoranConfigurator joranConfigurator = new JoranConfigurator();
    
         joranConfigurator.setContext(this.context);
         InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(this.fileLocation);
         try {
             if(resourceAsStream != null)
                 joranConfigurator.doConfigure(resourceAsStream);
             System.out.println("loggerback config file success !!!");  
         } catch (JoranException e) {
             e.printStackTrace();
         }
     }
    
     public void closeContext(){
         if(this.context != null)
             this.context.stop();
         System.out.println("logback context closed success !!!");
     }

    }
    ```

二. 配置p6spy

  1. 添加pom支持
    xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>1.3</version> </dependency>
  2. classpath下加入spy.properties
    java // p6spy是sqldriver的一种代理,用来获取发往数据库的真是sql,此处要配置真正的数据库代理 realdriver=com.mysql.jdbc.Driver appender=com.mylogger.WithoutResultsetLogger // 自定义sql输出格式(不打印结果集)

  3. 打印格式类
    该类编写参考spy.properties中默认的appender类 (#appender=com.p6spy.engine.logging.appender.Log4jLogger)
    ```java
    public class WithoutResultsetLogger extends FormattedLogger implements P6Logger {
    // protected Level level;
    protected String lastEntry;
    private static Logger logger = LoggerFactory.getLogger(WithoutResultsetLogger.class);

     public WithoutResultsetLogger() {
         P6SpyProperties properties = new P6SpyProperties();
     }
    
     public void logException(Exception e) {
         StringWriter sw = new StringWriter();
         PrintWriter pw = new PrintWriter(sw);
         e.printStackTrace(pw);
         this.logText(sw.toString());
     }
    
     public void logText(String text) {  // 自定义日志输出格式
         if(!text.contains("resultset"))
             logger.debug(text.substring(text.lastIndexOf("|")+1));//(text.substring(text.lastIndexOf("|")+1));
         this.setLastEntry(text);
     }

    }
    ```

转载于:https://www.cnblogs.com/72808ljup/p/5282660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值