logback的使用
logback的使用:
-
配置登录环境。您可以通过几种或多或少的复杂方法来执行此操作。
-
在希望执行日志记录的每个类中,
Logger
通过调用org.slf4j.LoggerFactory
该类的getLogger()
方法,将当前类名称或该类本身作为参数传递来检索 实例 。 -
通过调用其记录方法(即debug(),info(),warn()和error()方法)使用此记录器实例。这将在配置的附加程序上生成日志记录输出。
logback分为三个模块:logback-core,logback-classic(经典模块)和logback-access(访问,与Servlet容器集成在一起,以提供HTTP访问日志功能)。
Logger
, Appender
和Layout
。这三种类型的组件协同工作
Logger
班是的logback经典模块的一部分。另一方面,Appender
和 Layout
接口是logback-core的一部分,作为通用模块,logback-core没有记录器的概念。
LoggerContext
后者负责制造记录器并将它们排列成树状层次结构
TRACE,DEBUG,INFO,WARN和ERROR,默认情况下,此级别是DEBUG。TRACE < DEBUG < INFO < WARN < ERROR
如果日志记录请求的级别高于或等于记录器的有效级别,则认为该记录请求已启用。否则,该请求被称为已禁用。
logger.setLevel(Level. INFO);
用logback说,输出目标称为追加器。Appender
自定义输出格式。这是通过将布局与附加程序相关联来实现的
参数化记录
拼接的方式(字符串的拼接,产生较大的成本)
logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
一种基于消息格式的便捷替代方法:此变体不会产生参数构造的成本,并且仅当将日志记录请求发送到附加的附加程序时,消息才会被格式化。此外,格式化消息的组件得到了高度优化。
logger.debug("The new entry is {}.", entry);
如果需要传递三个或更多参数,Object[]
则也可以使用 变体。例如,您可以编写:
Object[] paramArray = {newVal, below, above}; logger.debug("Value {} was inserted between {} and {}.", paramArray);
运行流程:
配置:
可以通过编程或使用以XML或Groovy格式表示的配置脚本来配置Logback。
配置的初始化步骤:
-
Logback尝试在类路径中找到一个名为logback-test.xml 的文件 。
-
如果找不到此类文件,则logback尝试在classpath中找到一个名为logback.groovy 的文件 。
-
如果找不到这样的文件,它将在类路径 ..中检查文件 logback.xml 。
-
如果没有找到这样的文件,[服务提供商装载设施(在JDK 1.6中引入)用于解决执行 接口通过查找文件 META-INF \ SERVICES \ ch.qos.logback.classic.spi.Configurator 在类路径。它的内容应指定所需 实现的完全限定的类名。
com.qos.logback.classic.spi.Configurator
Configurator` -
如果以上方法均未成功,则logback将使用进行自动配置,
BasicConfigurator
这将导致日志记录输出定向到控制台。
假设不存在配置文件logback-test.xml或 logback.xml,则logback将默认为调用BasicConfigurator
,这将设置一个最小的配置。此最小配置包含一个ConsoleAppender
附加到根记录器的组件。使用PatternLayoutEncoder
设置 为格式的输出格式化格式 %d {HH:mm:ss.SSS} [%thread]%-5level%logger {36}-%msg%n。此外,默认情况下,为根记录程序分配了DEBUG
级别。
配置文件的最基本结构可以描述为<configuration>
元素,包含零个或多个<appender>
元素,然后是零个或多个<logger>
元素,然后是最多一个<root>
元素。
使用<appender>
元素配置一个附加程序,该元素具有两个必需属性name和class。该 名称属性指定,而该附加目的地的名称类属性指定的appender类实例化的全名。该<appender>
元件可含有零个或一个<layout>
元素,零个或多个 <encoder>
元件以及零层或更多 <filter>
的元件。除了这三个公共元素之外,<appender>
元素可以包含任意数量的与appender类的JavaBean属性相对应的元素。