很详细的讲解了简单的日志过滤器的原理,和PPT里的源代码一样!

有关代码中为什么要使用flush():

flush()意思是把缓冲区的内容强制的写出。 因为操作系统的某些机制,为了防止一直不停地磁盘读写,所以有了延迟写入的概念,(注意不要和frush()刷新混淆了)
主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。//Stack Overflow上说
  在网络web服务器上也是,为了防止写一个字节就发送一个消息,所以有缓冲区的概念,比如64K的内存区域,缓冲区写满了再一次性写入磁盘之中(或者发送给客户端浏览器)。
  flush方法一般是程序写入完成时执行。随后跟着close方法。例如:

         // 取得输出流。当然,看具体环境。PrintWriter out = Util.getWriter();out.println("输出一些信息,可能很多");out.flush();out.close();

Stack Flow 上解释:
flush() is probably not required in your example.

What it does is ensure that anything written to the writer prior to the call to flush() is written to the underlying stream, rather than sit in some internal buffer.

The method comes in handy in several types of circumstances:

If another process (or thread) needs to examine the file while it's being written to, and it's important that the other process sees all the recent writes.If the writing process might crash, and it's important that no writes to the file get lost.If you're writing to the console, and need to make sure that every message is shown as soon as it's written.

在您的示例中,flush()可能不是必需的。
它所做的是确保在调用flush()之前写入writer的任何内容都写入底层流,而不是位于某个内部缓冲区中。
这种方法在几种情况下都很有用:

  1. 如果另一个进程(或线程)在写入文件时需要检查该文件,并且另一个进程看到所有最近的写入非常重要。

  2. 如果写入过程可能会崩溃,那么重要的是不要丢失对文件的写入

  3. 如果您正在向控制台写入,并且需要确保每一条消息一经写入就显示出来。

综上:

在这个DEMO里面使用flush() <目前看来使用flush是一个好习惯,至少目前是>

我个人的认识是:
因为Fliter在整个程序关闭时才会调用其Destroy()方法,而只有在这个销毁方法里面才会把将PrintWriter对象关闭掉,因此如果在println后面不适用flush,可能会print很多句到内存缓冲中直到缓冲满了才会把其一次性给输出到文件中(别的情况可能是输出到控制台等等),而我们想要的效果是没print一句就直接从内存中转移到文件中,保证数据真正做到实时写入了文件中。(应该是为了保证数据不会被丢失,安全一点的方法)!

Servlet过滤器示例及分析----日志过滤器 以及对flush()理解相关推荐

  1. servlet过滤器 实例_Java Servlet过滤器示例教程

    servlet过滤器 实例 Java Servlet Filter is used to intercept the client request and do some pre-processing ...

  2. oracle过滤器基础,Oracle培训(四十六)——Servlet第六章知识点总结——过滤器编程...

    Oracle培训(四十六)--Servlet第六章知识点总结--过滤器编程 目标 编写一个过滤器 部署一个过滤器 了解请求和响应包装器 在请求分发器下的过滤器 知识点预览 过滤器 过滤器 1. 什么是 ...

  3. Spring Security(四) —— 核心过滤器源码分析

    摘要: 原创出处 https://www.cnkirito.moe/spring-security-4/ 「老徐」欢迎转载,保留摘要,谢谢! 4 过滤器详解 前面的部分,我们关注了Spring Sec ...

  4. Logback 日志过滤器的使用-日志分类归档方案

    文章目录 前言 1. Logback 过滤器的分类 2. 常规过滤器 2.1 日志级别过滤器 LevelFilter 2.2 日志评估过滤器 EvaluatorFilter JaninoEventEv ...

  5. boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器和格式化程序工厂的属性

    boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器和格式化程序工厂的属性 实现功能 C++实现代码 实现功能 boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器 ...

  6. jsp过滤器示例_Java 8过滤器,地图,收集和流示例

    jsp过滤器示例 大家好,许多读者给我发了电子邮件,写了一篇有关Java 8的地图和过滤器功能的文章,因为他们发现它们难以理解和使用. 即使我以前同时写过有关map()和filter()的博客,我仍在 ...

  7. angularjs 实例_AngularJS过滤器示例教程

    angularjs 实例 We looked at View Model, View and Controller concepts in the previous post. Now we are ...

  8. 盘式过滤器详细介绍分析

    盘式过滤器详细介绍分析: 一.盘式过滤器工作原理介绍: 盘式过滤器又称为叠片过滤器或叠片式过滤器,他是由过滤单元并列组合而成,其过滤单元主要是由一组带沟槽或棱的环状增强塑料滤盘构成,上下两层盘片中间沟 ...

  9. logback日志过滤器

    logback如果需要灵活的配置日志级别,需要结合过滤器,这个标签.需要注意的是,过滤器过滤的基础是在root标签的配置基础上进行的. 过滤器可以写在appender标签内,可以写一个或多个,顺序执行 ...

最新文章

  1. matplotlib 笔记:使用TeX标记
  2. python内置函数用来打开或创建文件_2020年《python程序设计》基础知识及程序设计598题XS[含参考答案]...
  3. 做事情一定要从小事情着手
  4. vue 点击倒计时 ajax 封装
  5. 2.3 最佳创新先锋:e代驾副总裁兼CTO于杨
  6. scala之Akka的Actor模型(上)
  7. java synchronized 参数_java – 将参数传递给synchronized块的目的是什么?
  8. 数据库学习--DML(数据管理语言)
  9. 初识机器学习_04 朴素贝叶斯
  10. java 二叉树的创建 遍历
  11. Maya: Render Setup System Maya教程:渲染设置系统 Lynda课程中文字幕
  12. ▶GODOT 101
  13. mysql获取字符串长度函数
  14. 简要描述服务器虚拟化四大特性,虚拟化的四大特性
  15. As Shell Raises Dividend, Future Gets Hazy
  16. 一个最简单的Delphi2010的PNG异形窗口方法
  17. 阿里云云边一体容器架构创新论文被云计算顶会 ACM SoCC 录用
  18. Python基础入门:条件语句--阿里云天池
  19. 国外计算机科学英语演讲,华工学子英语演讲共庆祖国华诞
  20. stm32 SD(SDSC)卡的学习与SPI 模式应用(卡槽介绍)

热门文章

  1. mysql myflash原理_如何利用 Myflash 解析 binlog ?
  2. python做数据分析需要oracle_精通 Oracle+Python,第 1 部分:查询最佳应践
  3. 取消过账oracle,总帐过帐是状态是“正在处理” 如何处理?
  4. Java乘法计算错误,Java JRE致命错误:乘法过多
  5. eclipse 如何关联git_git的相关操作
  6. 带你入门SpringCloud统一配置 | SpringCloud Config
  7. oracle各种查询语句
  8. 安装配置远程工具Xmanager
  9. java swing mysql实现的员工工资管理系统项目
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的服装商城