logback--基础--04--配置--appender

2023-11-09

logback–基础–04–配置–appender


代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/master/logback-learn

1、根节点< configuration>的子节点< appender>

在这里插入图片描述

  1. 是< configuration>的子节点,是写日志的组件。
  2. 有两个必要属性name和class。
    1. name指定appender名称
    2. class指定appender的全限定名。
  3. appender的类型
    1. SocketAppender(不常用)
    2. SMTPAppender(不常用)
    3. DBAppender(不常用)
    4. SyslogAppender(不常用)
    5. SiftingAppender(不常用)
    6. ConsoleAppender(常用)
    7. FileAppender(常用)
    8. RollingFileAppender(常用)
  4. 可以自定义Appender

2、ConsoleAppender(常用):把日志添加到控制台

2.1、属性

2.1.1、< encoder>

对日志进行格式化。

2.1.2、< target>

  1. 字符串 System.out 或者 System.err
  2. 默认:System.out

2.2、测试

    <!-- 表示打印到控制台 -->
    <appender name="limeFlogger" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 对日志进行格式化。 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        <!--字符串 System.out 或者 System.err ,默认 System.out-->
        <target>System.err</target>
    </appender>

在这里插入图片描述

3、FileAppender(常用):把日志添加到文件

3.1、属性

3.1.1、< file> 被写入的文件名

  1. 可以是相对目录
  2. 可以是绝对目录
  3. 如果上级目录不存在会自动创建
  4. 没有默认值。

3.1.2、< append>

  1. 如果是true,日志被追加到文件结尾
  2. 如果是false,清空现存文件
  3. 默认:true。

3.1.3、< encoder>

对记录事件进行格式化

3.1.4、< prudent>

  1. 如果是true
    1. 日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作
    2. 效率低
  2. 默认:false。

3.2、测试

   <appender name="limeFileLogger" class="ch.qos.logback.core.FileAppender">
        <file>./logs/log.log</file>
        <append>true</append>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        <prudent>false</prudent>
    </appender>


在这里插入图片描述

在这里插入图片描述

4、RollingFileAppender(常用):滚动记录文件

  1. 滚动记录文件
  2. 先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。

4.1、属性

4.1.1、< file>

  1. 被写入的文件名
  2. 可以是相对目录
  3. 可以是绝对目录
  4. 如果上级目录不存在会自动创建,没有默认值。

4.1.2、< append>

  1. 如果是true,日志被追加到文件结尾
  2. 如果是false,清空现存文件
  3. 默认:true。

4.1.3、< encoder>

对记录事件进行格式化

4.1.4、< rollingPolicy>

当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。

4.1.5、< triggeringPolicy>

告知 RollingFileAppender 何时激活滚动。

4.1.6、< prudent>

  1. 当为true时
    1. 不支持FixedWindowRollingPolicy
    2. 支持TimeBasedRollingPolicy
    3. 有两个限制
      1. 不支持也不允许文件压缩
      2. 不能设置file属性,必须留空。

4.2、< rollingPolicy>

4.2.1、TimeBasedRollingPolicy

  1. 常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。
  2. < fileNamePattern>
    1. 文件名称格式
    2. 必要节点,包含文件名及"%d"转换符,"%d"是SimpleDateFormat指定的时间格式
    3. RollingFileAppender的file字节点可有可无
      1. 设置file:可以为活动文件和归档文件指定不同位置
        1. 当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变
      2. 没设置file:活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次。
    4. "/“或者”"会被当做目录分隔符。
  3. < maxHistory>
    1. 可选节点
    2. 控制保留的归档文件的最大数量,超出数量就删除旧文件。
      1. 假设设置每个月滚动一次,且< maxHistory>是6,则只保存最近6个月的文件,删除之前的旧文件。
      2. 注意:那些为了归档而创建的目录也会被删除。

4.2.2、FixedWindowRollingPolicy

  1. 根据固定窗口算法重命名文件的滚动策略。
  2. < minIndex>:窗口索引最小值。
  3. < maxIndex>:窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。
  4. < fileNamePattern >
    1. 归档文件名称格式,必须包含"%i",例如
      1. 假设最小值和最大值分别为1和2,命名模式为 mylog%i.log,会产生归档文件mylog1.log和mylog2.log。
    2. 还可以指定文件压缩选项,例如,mylog%i.log.gz 或者 没有log%i.log.zip。

4.3、triggeringPolicy

4.3.1、SizeBasedTriggeringPolicy

  1. 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender触发当前活动文件滚动。
  2. < maxFileSize>
    1. 活动文件的大小
    2. 默认值:10MB。

4.4、测试1–每天生成一个日志文件,保存30天的日志文件。

  <appender name="limeFileLogger" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--归档文件名称格式-->
            <fileNamePattern>limeFileLogger.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--控制保留的归档文件的最大数量,超出数量就删除旧文件-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

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

    <root level="debug">
        <appender-ref ref="limeFileLogger" />
    </root>

在这里插入图片描述

4.5、测试2–按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志

  <appender name="limeFileLogger" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件名称-->
        <file>./logs/limeFileLogger.log</file>

        <!--根据固定窗口算法重命名文件的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!--归档文件名称格式-->
            <fileNamePattern>limeFileLogger.%i.log.zip</fileNamePattern>
            <!--窗口索引最小值-->
            <minIndex>1</minIndex>
            <!--窗口索引最大值-->
            <maxIndex>3</maxIndex>
        </rollingPolicy>

        <!--查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender触发当前活动文件滚动-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--活动文件的大小-->
            <maxFileSize>20MB</maxFileSize>
        </triggeringPolicy>

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

    </appender>

    <root level="debug">
        <appender-ref ref="limeFileLogger" />
    </root>

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

logback--基础--04--配置--appender 的相关文章

  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何创建适合屏幕宽度的等宽/高框? [复制]

    这个问题在这里已经有答案了 我正在尝试建立一个网站 其中有很多宽度和高度相等的框 例如 我有一个页面 其中并排有两个相同大小的框 简单的解决方案是将宽度和高度设置为 50vw 这在出现滚动条之前效果很好 我已经用谷歌搜索了几个小时 但无法理
  • 使用css bootstrap时如何仅向一列添加右边框?

    我正在尝试使用CSS引导框架 http getbootstrap com css tables在我的项目中 我正在使用带有以下类的表table table bordered table striped 我想删除除第一列之外的所有列的边框 这
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 更新和寻找最新的sid——持续更新中

    第一种 开始程序SAS中找到续订SAS软件 浏览找到最新的sid txt文件 确定 更新许可 确定 第二种 打开SAS 在编辑器中复制粘贴sid文件中第一个BEGIN下的 PROC SETINIT SAVE RUN 大概20行 点击上方的提
  • Vue-cli实现登录和重置功能

    Vue cli实现登录和重置功能 1 项目初始化 安装Vue脚手架 npm install g vue cli 通过Vue脚手架创建项目 在cmd命令行中输入 vue ui 使用图形化界面创建项目 配置Vue路由 配置Elment UI组件
  • Android使用Toolbar来添加右上角菜单

    好久没写东西了 最近学到了很多东西但是也非常忙 把一些知识积累一下 先上个效果图 很常见的一个需求 我们来看下怎么实现的 非常简单 activity main xml
  • 解决远程仓库配置密钥后,进行代码提交操作输入密码无效的问题

    问题产生 在开发的过程中 进行代码提交 弹出远程仓库需要录入密码 即使填入正确的密码也无反应 解决思路 公钥与私钥首先要配置正确 但配置完后依然无法生效 原因是git默认没有用已生成的公钥私钥的配置文件 在git的安装目录 Git etc
  • 分块矩阵计算行列式三板斧

    第一板斧 上下三角分块 第二板斧 对角为0零的分块 第三板斧 全分块 小招 A 2 B 2 其他招式 利用特征值计算行列式
  • pull request 时遇到 conflicted 的解决方法

    今天 pull request 的时候遇到了 conflicted 的问题 发现是因为相比于最开始 fork 的内容 原仓库的内容发生了变化 而我 fork 后的仓库没有及时更新 于是 首先点击 fork from 后的刷新标识 同步 fo
  • Unity学习笔记05-场景切换和加载

    Unity场景简介 场景 顾名思义就是我们在游戏中所看到的物品 建筑 人物 背景 声音 特效等 基本上和我们玩游戏时所看到的游戏 场景 是同一个概念 Unity3D中 场景 是一个视图 我们通过 场景 这个视图 来编辑 布置游戏中玩家所能见
  • Java Stream使用多个过滤器(filter)或复杂条件方法用法及简单写法代码

    本文主要介绍Java中 对List列表集合stream等 使用多个过滤器 filter 进行数据筛选 或使用复杂条件过滤数据的方法 以及简单写法代码 原文地址 Java Stream使用多个过滤器 filter 或复杂条件方法用法及简单写法
  • Go 编程学习路线

    安装IED vscode atom subl 插件安装错误总结 入门 go by example the way to go go web 编程 豆瓣 提升书籍 The Go Programming Language 2015 11 pdf
  • Oracle查看用户所在的表空间

    oracle 查看表空间有哪些表 select from dba tables where tablespace name 表空间名 注意表空间名大小写敏感 select table name tablespace name from us
  • linux的进程1:rootfs与linuxrc

    在内核启动的最后阶段启动了三个进程 进程0 进程0其实就是刚才讲过的idle进程 叫空闲进程 也就是死循环 进程1 kernel init函数就是进程1 这个进程被称为init进程 进程2 kthreadd函数就是进程2 这个进程是linu
  • 2023年6月电子学会Python等级考试试卷(四级)答案解析

    青少年软件编程 Python 等级考试试卷 四级 分数 100 题数 38 一 单选题 共25题 共50分 1 下列程序段的运行结果是 def s n if n 0 return 1 else return n s n 1 print s
  • Linux服务器EDAC CE memory read error

    之前在大数据集群中 有一台服务器的CPU占用总是莫名其妙飙高 就算执行简单任务也会耗费很长时间 且reboot不能解决问题 检查了各种可能的问题之后 最终在查看dmesg命令的设备信息时 发现大量如下的日志 1180532 573917 E
  • STL 小结

    看C STL一个月了 小结下这个阶段的学习所得 容器是以class template完成 内存管理师由memory pool完成 算法是由function template完成 仿函数 函数对象 是一种将operation 重载了的clas
  • SpringCloud整合Hystrix熔断器

    文章目录 SpringCloud整合Hystrix熔断器 1 什么是Hystrix 2 服务调用雪崩 3 线程隔离和服务降级 线程隔离原理 服务降级 4 实现Hystrix服务降级 导入springCloud的Hystrix依赖 注解启动类
  • rc=20 > Connect to SAP gateway failed

    这种错误 我是在一台用户的电脑上碰到的 解决方案很简单 把Computer Name换成英文 汗了许久
  • BUUCTF题目N1BOOK部分wp(持续更新)

    第九章 CTF之MISC章 两个部分的flag 附件 stego png 隐写了一个zip文件 zip文件里面是 2 jpg stego png 2 jpg stego png 用 StegSolve Data Extract BGR LS
  • leaflet 添加 wms

  • pytorch5-各种常用激活函数

    import matplotlib pyplot as plt import torch from torch import nn x torch linspace 6 6 10 sigmoid nn Sigmoid sigmoid激活函数
  • logback--基础--04--配置--appender

    logback 基础 04 配置 appender 代码位置 https gitee com DanShenGuiZu learnDemo tree master logback learn 1 根节点 lt configuration g