zoukankan      html  css  js  c++  java
  • Java知识积累——logback日志工具,告别到处输出变量值来调试程序的时代吧~

    在大学垒代码时,遇到程序错误,输出不是预计的情况时,你是怎么解决的呢?我的解决办法就是到处System.out.pringln();,打出当时的变量值,一点一点找哪里出错了。结果有的时候就忘了到底在哪里添加了用于找错的输出语句,然后就去不掉多余的输出了,然后就各种抓狂了。以及等等很多情况吧,不知道你们遇到过吗?步入职场后,逐渐接触到了日志这个概念,虽然之前也听说过,但却不了解其真正用途。又一次在心里痛骂了大学的教育之后,我开始自学目前公司在用的日志工具——logback。

    日志记录了程序的运行状态,输出了你指定需要输出的内容,能够方便快捷的定位出错的位置和原因。那么怎么使用logback呢,下面来简单介绍一下:首先需要导入第三方jar包,分别为logback-classic-1.0.6.jar,logback-core-1.0.6.jar,slf4j-api-1.6.4.jar

    下载地址

    slf4j:http://www.slf4j.org/download.html

    logback:http://logback.qos.ch/download.html

     

    Logback 分为三个模块:logback-core,logback-classic,logback-access(我们只用到前两个)

    logback-core 是核心;

    logback-classic 改善了 log4j,且自身实现了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志实现,如原始的 Log4J,java.util.logging 等;

    logback-access 让你方便的访问日志信息,如通过 http 的方式。

    将以上3个jar包导入工程后,需要配置logback.xml文件,告诉logback应该怎么工作。所以在src上右键新建一个xml文件,命名为logback.xml。关于logback.xml应该如何配置,其中的标签含义等,请阅读下列文章,在此感谢分享了这些文章的原作者。

    logback 简介

    logback 常用配置详解(一)<configuration> and <logger>

    logback 常用配置详解(二)<appender>

    logback 常用配置详解(三)<filter>

    配置完成后,我们即可在程序中应用logback进行日志输出,其方便快捷需要大家慢慢体验了。给一个使用logback的例子,该例子即使不配置logback.xml也可以运行,logback采用了默认配置直接输出到了控制台

     1 import org.slf4j.Logger;
     2 import org.slf4j.LoggerFactory;
     3 
     4 public class LogbackTest { 5     private static final Logger debugLogger = LoggerFactory.getLogger(LogbackTest.class); 
     6     public static void main(String[] args) {
     7         debugLogger.debug("debug thing");
     8         debugLogger.warn("warn thing");
     9     }
    10 }

     再放一个logback.xml的配置实例

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <configuration>
     4   <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
     5     <encoder>
     6       <pattern>%d{MMdd.HHmmss.SSS} [%-24t] %-5p L:%-3L %-22c{0} - %m%n</pattern>
     7     </encoder>
     8     
     9     <!-- 只输出level级别的日志 -->
    10     <filter class = "ch.qos.logback.classic.filter.LevelFilter">
    11       <level>INFO</level>
    12       <onMatch>ACCEPT</onMatch>
    13       <onMismatch>DENY</onMismatch>
    14     </filter>
    15   </appender>
    16 
    17   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    18     <File>log/server.log</File>
    19     <encoder>
    20       <pattern>%d{MMdd.HHmmss} [%-22t] %-5p L:%-3L %-22c{0} - %m%n</pattern>
    21     </encoder>
    22     
    23     <!-- 只输出level级别以上的日志 -->
    24     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
    25       <level>INFO</level> 
    26     </filter>
    27     
    28     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    29       <fileNamePattern>log/server.log.%d{yyyyMMddHH}</fileNamePattern>
    30     </rollingPolicy>
    31   </appender>
    32   
    33   <logger name="org.logback.test.LogbackTest" level="DEBUGE" />
    34   
    35   <root level="DEBUGE">
    36     <appender-ref ref="FILE"/>
    37     <appender-ref ref="stdout"/>
    38   </root>
    39 </configuration>

    输出如下:

    0402.153319.903 [main                    ] INFO  L:30  LogbackTest            - info thing

    通过日志的输出,我们能够很快的定位是哪个类的哪行出现了问题。

    PS: 我存在过,我遇见过,我失败过。 有些路,明明有坑却从没人放警示牌。有些事,明明是错的却没人去管。有些话,明明应该告诉后来人却没人去说。 既然没人做,那就我来吧。希望我曾经历过的挫折不再重现于后来人。希望传承能够不是只挂在嘴边。希望人模人样的“人”能够真正做人。
  • 相关阅读:
    Trades FZU
    H
    Coconuts HDU
    初始化Linux数据盘、磁盘分区、挂载磁盘(fdisk)
    虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox
    docker创建tomcat容器无法正常访问
    centos7一步一步搭建docker tomcat 及重点讲解
    docker配置国内阿里云镜像源
    代理模式(2):动态代理
    代理模式(1):静态代理
  • 原文地址:https://www.cnblogs.com/FlameRen/p/2995596.html
Copyright © 2011-2022 走看看