Java知识积累——logback日志工具,告别到处输出变量值来调试程序的时代吧~

本文主要是介绍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

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

这篇关于Java知识积累——logback日志工具,告别到处输出变量值来调试程序的时代吧~的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606068

相关文章

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程