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 的相关文章

  • 动态添加的 RemoteView 上的布局权重

    在我的小部件中 我使用以下内容将项目 R layout widget item 动态添加到我的主小部件布局中定义的 LinearLayout 中 Main widget layout RemoteViews views new Remote
  • 如何从号码选择器中跳过某些号码?

    选号器 np NumberPicker findViewById R id numberPicker1 np setMaxValue 200 np setMinValue 1 Button b Button findViewById R i
  • Motorola Android 2.2 相机忽略 EXTRA_OUTPUT 参数

    我以编程方式打开相机来拍摄视频 我告诉相机使用如下代码将视频文件放置到指定位置 Intent intent new Intent MediaStore ACTION VIDEO CAPTURE File out new File sdcar
  • 在 Volley 中更新 UI 最有效的方法是什么

    最近我在 android 中使用 Volley 库 它工作得很好 但我想知道更新 UI 的最有效方法 我有一个包含所有 Volley 方法的 Utils 类 现在我传递了所有视图将作为参数更新 但我读到我可以在活动中实现侦听器 然后将它们作
  • 在 Java 中,对复杂模型使用接口是否会带来性能提升?

    标题很难理解 但我不知道如何以另一种方式总结 欢迎任何澄清的编辑 我被告知并建议使用接口来提高性能 即使在并不特别需要常规 接口 角色的情况下也是如此 在这种情况下 对象是大模型 MVC 意义上的 具有许多方法和字段 向我推荐的 好用处 是
  • 如何并排展开和折叠三个div?

    document ready function toggle click function if this data name show sidebar animate width 10 hide map animate width 89
  • 更改 Java 字符串中的日期格式

    I ve a String代表一个日期 String date s 2011 01 18 00 00 00 0 我想将其转换为Date并将其输出到YYYY MM DD format 2011 01 18 我怎样才能实现这个目标 好的 根据我
  • 单击

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道如何用 jquery 做到这一点 但我被 React 困住了 每当用户点击 div 时 我如何聚焦输入字段 你需要有一个onCl
  • 是否可以使用 JavaScript 导入 HTML?

    我有一些具有相同页脚的 html 页面 使用 JavaScript 并且仅使用 JavaScript 我可以在其中导入另一个 html 页面吗 下面介绍了如何仅使用 JavaScript 向页面添加页脚 2022 代码 使用fetch ht
  • 为自定义 userdetailsservice 定义 bean

    我如何定义我的自定义UserDetailsServicebean 的方式使我的 spring mvc Web 应用程序能够使用我的底层 MySQL 数据库来检查用户和密码的身份验证 具体如下 我正在添加安全性spring petclinic
  • 没有 jQuery 的纯 CSS 工具提示[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用纯 CSS 创建 工具提示尾部 https stackoverflow com questions 5623072 how can i create a tooltip tail using
  • 通过 javascript 从 获取点击坐标

    Example
  • 使用可变参数绘制星形

    我的任务是编写程序 允许用户绘制星星 星星的大小和手臂数量可能不同 当我处理基本星时 我使用 GeneralPath 和点表进行处理 int xPoints 55 67 109 73 83 55 27 37 1 43 int yPoints
  • 信号量如何工作?

    信号量可以小于0吗 我的意思是 假设我有一个 N 3 的信号量 并且我调用 down 4 次 那么 N 将保持为 0 但一个进程将被阻塞 反之亦然 如果一开始我调用 N 可以大于 3 吗 因为在我看来 如果 N 可以高于 3 如果一开始我调
  • 将字符串从代码页 1252 转换为 1250

    我怎样才能转换一个String将代码页 1252 中的字符解码为String在代码页 1250 中解码 例如 String str1252 String str1250 convert str1252 System out print st
  • 在 Django 1.7 中使用 html 发送电子邮件

    In 发送邮件 我们有一个新参数 html message Docs https docs djangoproject com en dev topics email send mail I have 电子邮件 html文件 我想发送我的消
  • 为什么 pagefactory 类在从另一个类初始化时返回 null

    在我的测试课上 我有DesiredCapabilities为 Appium 测试设置 在该课程中 我初始化了 BasePage 课程pagefactory元素 当我运行测试时 它按预期工作 现在 我尝试将 DesiredCapability
  • spring+hibernate 没有 xml 的映射类

    在我的 applicationContext xml 中 这就是我将 xml 映射到 POJO 的方式 如何将目录映射到类文件而不需要创建 xml
  • Java/Android 字符串到颜色的转换

    我正在制作一个应用程序 我希望能够通过用户输入 edittext 和十六进制值设置各种颜色 例如 eeeeee等等 问题是我似乎不知道如何转换它们 如果我在代码中做这样的事情 它工作得很好 标题栏 setBackgroundColor 0x
  • Spring Boot 应用程序崩溃

    请告诉我哪里有问题 我尝试启动我的第一个在 Spring Boot 上开发的应用程序 我已经在 SpringMVC 上有了简单的 Web 项目 现在我喜欢在 BOOT 上构建它 这是错误输出 org springframework bean

随机推荐

  • 更新和寻找最新的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