IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Logback使用学习一(简单使用) -> 正文阅读

[开发工具]Logback使用学习一(简单使用)

Logback是一款经典的日志框架。
在许多地方都可以使用,这里先放出官方的文档地址
https://logback.qos.ch/documentation.html

1.准备必要的包文件

logback的必要的包

logback-core
logback-classic
slf4j-api

如果你是使用Maven的话,则只需要引入以下即可

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.3.0-alpha13</version>
</dependency>

可选的依赖:
如果你在使用中用到了STMPAppender,则需要引入JavaMail的依赖

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>${javax.mail.version}</version>
</dependency>

如果要使用JaninoEventEvaluator,则需要引入janino

<dependency>
  <groupId>org.codehaus.janino</groupId>
  <artifactId>janino</artifactId>
  <version>3.1.6</version>
</dependency>

2.完成配置文件

Logback可以通过编程方式进行配置,也可以使用以XML或Groovy格式表示的配置脚本进行配置。顺便说一句,现有的log4j用户可以将他们的log4j.properties文件转换为logback.xml使用我们的DistinctionTranslator Web应用程序。

让我们首先讨论一下logback为尝试配置自身而遵循的初始化步骤:

Logback 尝试在类路径中查找名为 logback-test.xml 的文件。

如果未找到此类文件,它将在类路径中检查文件 logback.xml。

如果未找到此类文件,则使用 服务提供程序加载工具(在 JDK 1.6 中引入)通过在类路径中查找文件 META-INF\services\ch.qos.logback.classic.spi.Configurator 来解析 com.qos.logback.classic.spi.Configurator 接口的实现。 其内容应指定所需实现的完全限定类名。Configurator

如果上述操作均未成功,则 Logback 将使用 BasicConfigurator 自动配置自身,这将导致日志记录输出定向到控制台。

最后一步是作为最后的努力,在没有配置文件的情况下提供默认(但非常基本)的日志记录功能。

配置文件的基本由三部分构成 Appender,Logger,Root
请添加图片描述

Appender标签

Appender是具体负责日志输出的组件,设置一个Appender标签,差不多等于定义一个日志的输出方式。
当然,他可以有多个。(暂且理解为一个输出器)

它有两个必要的属性
1.name 这个不多说,就是制定一个名字
2.class 制定实例化Appender对象的具体类

这里的class可以指定如下类型

  1. ch.qos.logback.core.ConsoleAppender (控制台输出)
  2. ch.qos.logback.core.FileAppender (文件输出)
  3. ch.qos.logback.core.rolling.RollingFileAppender (文件输出的进阶版)
  4. ch.qos.logback.classic.net.SocketAppender (网络连接下远程输出)
  5. ch.qos.logback.classic.net.SSLSocketAppender
  6. ch.qos.logback.classic.net.SMTPAppender(邮件输出)
  7. 。。。。。。。。。。。。。。

一般如果需要自定义Appender的话需要基础抽象类AppenderBase完成appender方法。
这些的详细介绍在官网中有详细的讲解。你可以直接参考。
https://logback.qos.ch/manual/appenders.html

一般而言,它的内部只会设置encoder或layout,及filter子标签。
在这里插入图片描述
**这里的layout和encoder标签的功能很相似。**所以你可以随便选择一个使用。
且它们都需要class属性作为必要属性,但如果你只想使用layout,encoder的默认实现,你可以省略该属性。
(PS)

<layout class="ch.qos.logback.classic.PatternLayout"> 
<!-- //这个全类路径就是layout的默认实现类,可以省略  -->
  <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
</layout>
<encoder class="ch.qos.logback.classic.PatternLayoutEncoder">
   <!-- 同上默认实现类,可以省略 -->
   <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n</pattern>
   </encoder>

使用Filter可以对Appender的输出内容进行过滤,且可以自定义。

public class SampleFilter extends Filter<ILoggingEvent> {
   //实现Filter接口即可,该接口只有一个方法,
   //返回值在枚举类型FilterReply中选择
   //为Deny则直接销毁该日志事件
   //为NEUTRAL则放行给后面的过滤器
   //为ACCEPT则直接全部放行
  @Override
  public FilterReply decide(ILoggingEvent event) {
    if(某种情况)    
    	return FilterReply.ACCEPT;
    if(某种情况)  
      	return FilterReply.NEUTRAL;
      	 if(某种情况)  
      	return FilterReply.DENY;
    }
  }
}
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!--指定过滤器类型-->
    <filter class="chapters.filters.SampleFilter" />

    <encoder>
      <pattern>
        %-4relative [%thread] %-5level %logger - %msg%n
      </pattern>
    </encoder>
  </appender>

Logger标签

Logger标签代表记录器
它有三个属性可以配置

  • name (名称----必要【指定受此影响的包名或者类名】)
  • level(记录等级,在TRACE, DEBUG, INFO, WARN, ERROR, ALL or OFF一个)
  • additivity (是否可以设置多Appender,true为可以,false反之)

root标签则为根logger
它则只可以设置一个属性level用来设置日志等级

Logger之间的日志等级具有继承关系,如果logger的level属性不填则默认继承父logger的日志等级。

另外一个点是,Logger或root标签则只可以出现appender-ref子标签(目前没有发现其他可以在logger中使用的标签)

appender-ref标签指定一个已经存在的Appender标签的name属性即可
(这有点像spring 的配置文件中bean标签的ref属性,同样参照一个已存在的bean)

例:

<!-- logback为java中的包 -->   
  <logger name="logback"/>   
   
  <root level="DEBUG">             
    <appender-ref ref="STDOUT" />   
  </root>

3.使用测试

创建项目,引入依赖包
然后创建logback.xml在classpath下(即src下)
请添加图片描述
完成配置文件,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>
				%date{yyyy-MM-dd hh:mm:ss}|%5level [%thread] - %msg%n
			</pattern>
		</encoder>
	</appender>
	<!--只是用一个根logger,请注意这里的日志等级-->
	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
	</root>
</configuration>

在Java中测试

public class MyLogTest {
	

	final static Logger logger = LoggerFactory.getLogger(MyLogTest.class);
	
	public static void main(String[] args) {
		
		
		
		logger.warn("DoBefore");
		DoSomething();
		logger.debug("helloshit");
		logger.error("helloshit");
		logger.trace("helloshit");
		logger.info("helloshit");
	
	}
	
	public static void DoSomething() {
		System.out.println("This method will do something");
	}

}

结果如下

2022-05-03 03:19:32| WARN [main] - DoBefore
This method will do something
2022-05-03 03:19:32|DEBUG [main] - helloshit
2022-05-03 03:19:32|ERROR [main] - helloshit
2022-05-03 03:19:32| INFO [main] - helloshit

仔细对比一下发现少了一条TRACE的输出
这并不是BUG,而是logback的logger日志等级输出机制

它分为请求日志等级(简称p)和实际可执行日志等级 ( 简称q)
可执行日志等级就是我们刚才给root根logger指定的level属性的值,
请求日志等级就是我们在方法中的调用,
如果p>=q,则可以输出日志,反之则不可以输出,这就是刚才为什么少了一条输出的原因。
如果需要更详细的了解,请看下面的连接
https://logback.qos.ch/manual/architecture.html

多目标输出日志

多目标输出日志也非常的简单,你只再配置一个appender即可

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
	<!--在控制台-->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>
				%date{yyyy-MM-dd hh:mm:ss}|%5level [%thread] - %msg%n
			</pattern>
		</encoder>
	</appender>
	<!--在文件中输出-->
	<appender name="FILE" class="ch.qos.logback.core.FileAppender">
		<file>E:\eclipseWorkSpace\LogBackTest\src\logfile.log</file>
		<append>true</append>
		<encoder>
			<pattern>
				%date{yyyy-MM-dd hh:mm:ss}|%5level [%thread] - %msg%n
			</pattern>
		</encoder>
	</appender>
	
	
	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>
	
</configuration>

请添加图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:40:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/13 15:13:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码