Logback手记(一)

【Logback】Logback 中的 Appenders Appender组件负责处理Logback日志写入的任务,该组件必须实现接口,该接口的主要方法总结如下://主要是解决将日志写到哪里去的问题//核心方法Appender接口中其实就一个最核心的方法,即doAppend()方法,且该方法只有一个参数,也就是类型为 E 的对象实例。泛型 E 的实例类型需要根据 logback 的具体模块进行决定,在模块内,E 的类型为ILoggingEvent(日志记录事件),在模块内,E 的类型为。 阅读详情

Logback手记(一)

2013年09月22日  ⁄ 综合 ⁄ 共 6184字 ⁄ 字号  小 中 大  ⁄ 评论关闭

1、什么是logback

        logback的产生是作为著名的日志框架log4j项目的一个继承者。它的设计者正是log4j的创造者Ceki Gülcü。logback在很大幅度上比现有的日志系统拥有更快的速度和更小的体积。logback也提供了独特和一些有用的特性,譬如标记、参数化的日志语句、有条件的堆栈跟踪和强大的事件过滤机制。这些只是运用logback提供的特性的一些例子。对于它自己的错误报表,logback依赖于状态对象,这样很大程度上促进了故障的排除。你可能更希望在日志之外依赖于状态对象。logback的核心绑定joran,一个强大和通用的配置系统,能在你自己的项目中起到很大的影响。

2、配置

2.1、所需jar包

logback-classic-1.0.0.jar

logback-core-1.0.0.jar

slf4j-api-1.6.4.jar

 

logback jar下载地址:http://logback.qos.ch

slf4j jar下载地址:http://www.slf4j.org/

 

2.2、配置文件

logback可以有以下三种配置文件:

Ø  logback.groovy

Ø  logback-test.xml

Ø  logback.xml

logback加载时也是按以上顺序进行加载的。

 

可以在代码中添加以下语句查看logback内部状态:

LoggerContextlc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);

 

如果你没有配置文件,会在控制台上输出以下语句:

11:19:06,828|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource[logback.groovy]
11:19:06,828|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT findresource [logback-test.xml]
11:19:06,828|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT findresource [logback.xml]
11:19:06,828|-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up defaultconfiguration.

 

2.3、简单应用

Loggerlogger = LoggerFactory.getLogger(“loggerOne”); //获取logger对象实例

logger.debug("Hellologback debug.");   //logger对象以debug级别输出调试语句

以上代码语句就生成了一个logger实例,命名为”loggerOne”,也就是说“loggerOne”就是这个logger的名称。

 

如果在代码中添加如下语句:

Logger logger1 =LoggerFactory.getLogger(“loggerOne”);

Logger logger2 =LoggerFactory.getLogger(“loggerOne”);

则代表logger1和logger2是两个相同的对象实例。所以在logback中只要logger的名称相同,那就代表是相同的对象实例。

2.4、logger命名

 

logger的命名是大小写敏感的,logger的命名一般都是取“类名.class”,这样命名在日志输出中也可看出其来源。

代码:

Logger logger =LoggerFactory.getLogger(LogBackAction.class);

logger.debug("Hello logbackdebug.");

 

控制台输出:

11:57:07.375["http-apr-8080"-exec-8] DEBUG app.action.LogBackAction - Hello logbackdebug.

就可以看出其具体来源于哪个类

 

logger命名层次:

如果logger名称带上点号后是另一个logger的名称的前缀,则前者就被称为后者的祖先,如果logger与其后者logger之间没有其他祖先,则称前者为父logger,后者为子logger,相当于java中子类跟父类的概念。

例如:

  app.action    //父logger

  app.action.logbackaction  //子logger

2.5、logger有效级别

logback中一共有5种有效级别,分别是TRACE、DEBUG、INFO、WARN、ERROR,优先级依次从低到高,logger之间的级别也有继承关系,但这里就不阐述了。

 

3、配置文件语法规则

3.1、简单配置分析

logback的配置文件还是非常简单,它的根节点是<configuration>,其又包括0个或多个<appender>节点、0个和多个<logger>节点、至多一个<root>节点。如下图所示:

                                               图(1)

如下代码所示是一个最简单的配置:

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

以上配置中定义了一个appender和一个root,appender可以理解为logback输出的目的地,root节点是根logger的意思,这里定义了根logger的输出就是控制台。

 

pattern节点中定义的是输出的模式规则:

%d{HH:mm:ss.SSS}:当前时间

[%thread]:线程名

%-5level:logger定义的级别

%logger{36}:logger名称

-%msg%n:定义的输出

 

如下代码:

Loggerlogger = LoggerFactory.getLogger(LogBackAction.class);

logger.debug("Hellologback debug.");

输出:

13:13:51.625["http-apr-8080"-exec-6] DEBUG app.action.LogBackAction - Hellologback debug.

3.2、控制输出级别

logback日志级别一共有5种,可以通过配置文件输出指定级别的日志信息。

在以上配置文件中添加如下代码:

<loggername="app.action.LogBackAction" level="INFO"/>

表示命名为“app.action.LogBackAction”的logger只输出info级别的日志信息。

 

3.3、配置appender

appender可以包含0过或多个layout节点,0个或多个encoder节点,0个或多个filter节点,如下图所示:

                                                                               图(2)

输出到文件的appender,配置如下:

<appender name="logFile" class="ch.qos.logback.core.FileAppender">
   <file>myApp.log</file>
   <encoder>
	   <pattern>%d{yyyy-MM-dd HH:mm:ss} -%msg%n  </pattern>
   </encoder>
</appender>

如上配置后日志信息将写入到myApp.log文件中,默认情况下logback会将日志信息追加到日志文件中,如果在appender中加入<appender>false</appender>则会替换之前的日志信息。

 

logback配置文件中还可以设置时间戳,这样的话就可以将日志信息输出到日期的指定文件中,如下配置:

<!--时间戳格式设置为yyyy-MM-dd-->

<timestampkey="byDay" datePattern="yyyy-MM-dd"/>

 

appender配置如下:

<appender name="logFile" class="ch.qos.logback.core.FileAppender">
	   <file>myApp_${byDay}.log</file>
	   <encoder>
		   <pattern>%d{yyyy-MM-dd HH:mm:ss} -%msg%n  </pattern>
	   </encoder>
 </appender>

以上配置日志信息就会写入一个“myApp”+ “yyyy-MM-dd”的文件中.

 

以上appender中使用到的类是FileAppdener,也就是基本的文件输出,logback中还有RollingFileAppender继承FileAppender,能够滚动记录文件。也就是当符合某个条件时,可以将日志信息记录到其他日志文件中。如果想用RollingFileAppender则需要配置RollingPolicy和TriggerPolicy,分别表示滚动策略和触发策略。

 

示例如下:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<file>test.log</file>
	<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
	  <fileNamePattern>test.%i.log</fileNamePattern>
	  <minIndex>1</minIndex>
	  <maxIndex>3</maxIndex>
	</rollingPolicy>
	<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
	  <maxFileSize>5MB</maxFileSize>
	</triggeringPolicy>
	<encoder>
	  <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
	</encoder>
</appender>

以上代码配置了RollingFileAppender,rollingPolicy定义为FixedWindwoRollingPolicy,这个滚动策略表示当满足了一定的触发策略后,logback会将日志信息写入到其他的日志文件中。配置了FixedWindowRollingPolicy后需要配置以下节点信息:

<fileNamePattern>:表示当触发了回滚策略后,按这个文件命名规则生成归档文件,命名规则中的%i表示在maxIndex和minIndex之间的一个整数值。

<minIndex>:最小索引值

<maxIndex>:最大索引值

假设生成三个日志归档文件,test.1.log、test.2.log、test.3.log,则test.1.log文件代表最先写入的那个文件,当三个文件都写满后会先删除test.3.log文件,依次循环。

 

logback中还有基于时间的rollingPolicy,配置如下:

 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- Support multiple-JVM writing to the same log file -->
    <prudent>true</prudent>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory> 
    </rollingPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

以上配置的保存30天的根据fileNamePattern的命名规则创建归档文件,日志信息则写入新的文件中。

 

有时当你在按照日期进行归档时还想对日志文件大小进行限制,可以使用logback中的SizeAndTimeBasedFNATP,它是TimeBasedRollingPolicy的子组件,FNATP代表“文件命名和触发策略”。

配置如下:

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 100MB -->
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

以上配置表示媒体的日志文件不能超过100MB,一旦超过就要归档。

 

logback还有很多的高级特性,但以上介绍可以满足一般系统对日志的需求。

 

                                                                                                                                                                                                           未完待续。。。。。。

读logback源码系列文章(七)——配置的实际工作类Action 上篇博客介绍了ContextInitializer类如何把框架的配置工作委托给各个Action具体实现类,这篇博客就接下来介绍一下,Action组件是如何进行配置的实际工作的 老规矩,先上图 如图所示,首先Action是一个抽象类,定义了begin()、body()、end()方法,这些方法如上篇博客所说,是给Interpreter调用的,Interpreter的endElement()方法 阅读详情

相关推荐

【Logback】Logback 的配置文件

首先,DefaultJoranConfigurator 会尝试查找“logback.configurationFile” 系统属性上指定的文件。如果可以找到该文件,则会读取并解释该文件,然后进行配置。如果没有找到上述文件,DefaultJoranConfigurator 将尝试在类路径上查找配置文件 “logback-test.xml” 。如果可以找到该文件,则会读取并解释该文件,然后进行配置。 如果没有找到上述文件,配置器将继续尝试在类路径中查找配置文件

swadian2008的博客 4350

logback 从入门到精通 超详细配置说明

logback简介 官网http://logback.qos.ch logback主要由三个模块构成:logback-core,logback-classic及logback-access。 logback-core为基础核心,另外两个均依赖它。其中logback-classic实现了简单日志门面SLF4J;logback-access主要作为一个与Servlet容器交互的模块,提供与HTTP访问相关的一些功能。 logback取代log4j的理由 更快的实现:Logback的内核重写了,在一些关键执行路

weixin_41377777的博客 1万+

读logback源码系列文章(一)——对接slf4j

以前也读过一些开源项目的源码,主要是spring和ant,不过那会都没记录下来,也没仔细消化吸收,现在时间久了忘了好多,而且模模糊糊地感觉学到了一些东西,但具体是什么也说不出个所以然来。深刻反省,这样读源码效果太差。 前几天决定重新开始读源码,并把读源码的过程和收获记录下来。想了想决定先用1-2个月时间把logback的源码看一下。目的是……,好吧,没什么目的,就是想读一下。 大家知道,slf

kyfxbl 3085

使用logback输出日志总结

1.日志级别 logback有5种级别,分别是TRACE 、 DEBUG 、INFO 、WARN 、ERROR,定义于ch.qos.logback.classic.Level类中,如下: 如上图: Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出. Debug:指出细粒度信息事件对调试应用程序是非常有帮助的. Info:消息在粗粒度级别上突出强调应用程序的运行过程. Warn:输出警告及warn以下

MrYushiwen的博客 1万+

logback配置详解

logback配置详解,关于logback的spring集成配置的详细说明及示例

Unity PSD分层导入插件ps2d原理与实战指南

PSD作为UI设计主流源文件,其图层结构、混合模式、文字矢量属性等核心语义在传统引擎导入中普遍丢失,导致设计还原度低、多语言适配难、运行时不可控。ps2d通过深度解析PSD二进制规范,将图层映射为GameObject树、文字转为TextMeshPro可编辑组件、形状生成矢量Mesh、蒙版与图层样式编译为定制Shader,实现设计意图的精准程序化表达。该方案显著提升UI开发效率,支撑高保真还原、动态修改、分辨率自适应及运行时热重载等工程需求,是Unity中连接设计师与程序员的关键工作流中枢。

weixin_32943857的博客 348

Spring Boot logback日志

slf4j和log4j、log4j2、logback 之间的关系 log4j(作者Ceki Gülcü)出来时就等到了广泛的应用(注意这里是直接使用),是Java日志事实上的标准,并成为了Apache的项目 Apache要求把log4j并入到JDK,SUN拒绝,并在jdk1.4版本后增加了JUL(java.util.logging) 毕竟是JDK自带的,JUL也有很多人用。同时还有其他日志组件,如SimpleLog等。这时如果有人想换成其他日志组件,如log4j换成JUL,因为api完全不同,就需要改动代

这个需求,做不了 2338

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

改logback logstash-logback-encoder 框架本身的日志级别

大家好,我是烤鸭: 最近遇到一个问题,想把logback框架本身的日志级别修改,需要 logstash-logback-encoder 6.1 以上的版本才可以。 直接上代码 这里修改的不是业务日志级别,是 logback 框架本身(确切地说是 logstash-logback-encoder)这个包的日志级别,源码默认的是 WARN 级别,现在想改成只有ERROR的日志输出。 初始化加载类: package com.xxx.reporter.flume; ​ import ch.qos.log

烤鸭的世界我们不懂。 2694

TC3xx芯片中断配置避坑指南:从AUTOSAR Davinci配置到SRN地址计算的完整流程

本文详细解析了英飞凌TC3xx芯片的中断配置流程,从AUTOSAR Davinci工具链到硬件调试的全链路指南。重点介绍了中断路由(IR)模块、服务请求节点(SRN)和中断控制单元(ICU)的配置技巧,帮助开发者避开常见陷阱,优化中断性能。

weixin_30628801的博客 411

Mac查看以太网信息,IP地址,查看配置桥接网络,使得虚拟机和本机ping通--linux系统part

4. 在本机的终端中使用ping命令,查看是否能够ping通虚拟机系统,如下图所示已经ping通。3-查看IP为192.168.1.244,还可以看到一些具体信息,如TCP/IP,DNS等;2-打开centos,进入管理员root模式(使用su命令加上输入管理员密码)然后使用ifconfig命令查看端口地址,如下所示为192.168.1.248。3-在虚拟机内使用ping命令,测试是否和网络连通,如下图所示已经ping通。打开虚拟机设置-点击网络适配器-选择桥接网络。1-打开设置,选择网络。

m0_65485230的博客 1548

logback的使用 logback.xml与logback-spring.xml的区别

一、logback的介绍   Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging ...

我的树洞 1万+

Rockit VDEC解码实战:从零构建高效视频处理流水线

本文详细介绍了Rockit VDEC硬件解码模块在RK3568/RK3588平台的应用实践,涵盖开发环境配置、MPI接口使用、码流发送模式选择、内存管理优化及多路解码系统构建。通过实战案例展示如何利用VDEC实现高效视频处理流水线,显著降低CPU占用率,提升嵌入式多媒体开发效率。

ol789012的博客 304

SpringBoot 集成 Logback-Logback(一)

Spring Boot 家族中核心 Spring Boot Starter 中集成了 Logback 日志框架. Logback 的作者说: Logback 的目的是成为目前流行的 Log4j 项目的继承者, 填补 Log4j 的空白. 让我们一起看看 Logback 到底有什么过人之处. 测试项目地址: https://gitee.com/zture/spring-test/tree/master/logback Logback 的介绍 Logback是由log4j创始人设计的另一个开源日志组件.

Java Developer Blog 680

PCL学习笔记(四)——点云曲面重建

文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在

dayuhaitang1的博客 6912

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2504

Logback的使用

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。Logback日志系统的特性都是通过核心配置文件logback.xml控制的。官方网站:http://logback.qos.ch/index.html。通过logback.xml中的标签可以设置输出位置和日志信息的详细格式。通常可以设置2个日志输出位置:一个是控制台,一个是系统文件中。ALL和OFF分别是打开全部日志信息,及关闭全部日志信息.分别是打开全部日志信息,及关闭全部日志信息.

小懒虫的博客 1069

手把手教你学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了四开关Buck-Boost(FSBB)变换器的Simulink仿真方法,重点解决模式切换时的直通风险和输出电压波动问题。通过统一电压PI控制、迟滞比较模式仲裁(Buck/Boost/Pass-Through)和200ns死区设计,实现了Vin从26V到22V变化时Vout稳定在12V±0.15V。关键步骤包括:搭建功率级电路、Stateflow模式判断、PI控制器输出占空比映射(Buck模式D≈Vo/Vin,Boost模式D≈1-Vo/Vin),以及带死区的PWM信号分配。仿真验证了切换过程中

MHD0815的博客 115

Logback手记

1、什么是logback         logback的产生是作为著名的日志框架log4j项目的一个继承者。它的设计者正是log4j的创造者Ceki Gülcü。logback在很大幅度上比现有的日志系统拥有更快的速度和更小的体积。logback也提供了独特和一些有用的特性,譬如标记、参数化的日志语句、有条件的堆栈跟踪和强大的事件过滤机制。这些只是运用logback提供的特性的一些例子。对

记录成长的点点滴滴 594

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

logback的使用和logback.xml详解

原文地址《logback的使用和logback.xml详解》,对原文有误的文字进行了修改。对原文中没有的过滤器&lt;filter&gt;标签进行了补充。一、logback的介绍  Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic...

罗先森何其有幸的博客 5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

logback(一)理论概述

参考文章直达车logback(一)理论概述 logback(二)springboot配置日志文件格式、logback-spring配置文件详解 logback(三)mybatis-plus结合logback将sql语句输出到日志文件Logback继承了log4j,是一款开源项目。它由Ceki Gülcü设计,也是 log4j的创始人。 它建立在十年来设计工业强度测试系统的经验基础上。由此产生的产品,比所有现有的日志记录系统更快,占用更小的空间,有时还会有很大的差距 。同样重要的是,日志返回提供了其他日志系统

lh155136的博客 701

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

logback 配置详解(一)

一:根节点包含的属性:   scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此

海大哥 23万+

Logback教程

Logback介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面三个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback...

逐墨飞扬的博客 1467
上一篇: log4j配置打印mybatis sql语句
下一篇: catalina.home catalina.base 区别
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值