03-Log系统设计模式解决方案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
®
Log系统设计新方案
Evolve by case
成果
架构模式-观察者模式
Framework 框架的实践
logging.properties Formatter
LogManager Log
Formatter Handler 目的地
1
*
Filter
XXFilter
配置信息
扩展点
Handler:Log的处理方式
问题3:通过该案例的重构, 对比最初的设计,你学习到那些?
通过该案例的重构学习, 你学习到了那些东西, 有哪些收
获或者感想?
®
参考技术
Evolve by case
参考其他著名框架
Log4J
Java Log API
Java Logging
Handler
ConsoleHandler: 输出日志到控制台中
然后将自定义的级别作为静态成员变量声明即可。Hale Waihona Puke Baidu
症状
Level
创建对象的过程
不易扩展
重构之道
Move Creation Knowledge to Factory
Replace Type Code with Class
(Pipes and Filters)管道和过滤器 推迟实现-使用配置文件 形成Framework, 可以后期灵活的扩展
Pipe
Framework 框架的实践
logging.properties Formatter
LogManager Log
Formatter Handler
Formatter Handler Handler
Filter
Filter
XXFilter
XXHandler
Observer模式 or 责任链?
Formatter
日志可以被格式化为一定格式的文本,也可以成为
XML 或者 HTML 这样标准的格式。这取决于
Formatter 类的具体实现 SimpleFormatter XMLFormatter
java.util.logging.Level
JDK 日志框架默认提供了 SEVERE,WARNING,INFO,CONFIG, FINE,FINER,FINEST 这几种日志级别。如果我们需要定义 更多的日志级别,只需要继承 java.util.logging.Level 类,
请你上台PK?
管道和过滤器
管道和过滤器(Pipes and Filters)
体系结构模式为处理数据流的系统提供了一种结构。每个 处理步骤封装在一个过滤器组件中。数据通过相邻过滤器 之间的管道传输。重组过滤器可以建立不同的系统功能。
非软件应用
Pipe/Filter Pattern
Pattern Name: Pipe/Filter
Component: Filter----Data Handling Connector: Pipe----Data Translation and Transportation
Filter
Input
Data Sour ce
Output
P1
F1
P2
F2
P3
F3
P4
F4
P5
Dat a Sink
Formatter:log信息的格式化方式
Filter:过滤器的扩展 logging.properties:配置扩展的信息
作业
增加一直UDP方式的Log输出
增加一种新的消息格式化
问题1: 请回答该设计之中使用了那些设计模式?
你认为使用了那些设计模式? 指出地方?
问题2: 请认为该设计那些地方还存在坏症状和如何改进?
FileHandler:输出日志到指定文件中
MemoryHandler:输出日志到内存缓冲区中,当一定的条件满足 的时候(如某种关键字的日志信息)再将缓冲区中的日志输出 SocketHandler: 输出日志到网络 socket 中 StreamHandler: 输出日志到输入输出流对象中
Log系统设计新方案
Evolve by case
成果
架构模式-观察者模式
Framework 框架的实践
logging.properties Formatter
LogManager Log
Formatter Handler 目的地
1
*
Filter
XXFilter
配置信息
扩展点
Handler:Log的处理方式
问题3:通过该案例的重构, 对比最初的设计,你学习到那些?
通过该案例的重构学习, 你学习到了那些东西, 有哪些收
获或者感想?
®
参考技术
Evolve by case
参考其他著名框架
Log4J
Java Log API
Java Logging
Handler
ConsoleHandler: 输出日志到控制台中
然后将自定义的级别作为静态成员变量声明即可。Hale Waihona Puke Baidu
症状
Level
创建对象的过程
不易扩展
重构之道
Move Creation Knowledge to Factory
Replace Type Code with Class
(Pipes and Filters)管道和过滤器 推迟实现-使用配置文件 形成Framework, 可以后期灵活的扩展
Pipe
Framework 框架的实践
logging.properties Formatter
LogManager Log
Formatter Handler
Formatter Handler Handler
Filter
Filter
XXFilter
XXHandler
Observer模式 or 责任链?
Formatter
日志可以被格式化为一定格式的文本,也可以成为
XML 或者 HTML 这样标准的格式。这取决于
Formatter 类的具体实现 SimpleFormatter XMLFormatter
java.util.logging.Level
JDK 日志框架默认提供了 SEVERE,WARNING,INFO,CONFIG, FINE,FINER,FINEST 这几种日志级别。如果我们需要定义 更多的日志级别,只需要继承 java.util.logging.Level 类,
请你上台PK?
管道和过滤器
管道和过滤器(Pipes and Filters)
体系结构模式为处理数据流的系统提供了一种结构。每个 处理步骤封装在一个过滤器组件中。数据通过相邻过滤器 之间的管道传输。重组过滤器可以建立不同的系统功能。
非软件应用
Pipe/Filter Pattern
Pattern Name: Pipe/Filter
Component: Filter----Data Handling Connector: Pipe----Data Translation and Transportation
Filter
Input
Data Sour ce
Output
P1
F1
P2
F2
P3
F3
P4
F4
P5
Dat a Sink
Formatter:log信息的格式化方式
Filter:过滤器的扩展 logging.properties:配置扩展的信息
作业
增加一直UDP方式的Log输出
增加一种新的消息格式化
问题1: 请回答该设计之中使用了那些设计模式?
你认为使用了那些设计模式? 指出地方?
问题2: 请认为该设计那些地方还存在坏症状和如何改进?
FileHandler:输出日志到指定文件中
MemoryHandler:输出日志到内存缓冲区中,当一定的条件满足 的时候(如某种关键字的日志信息)再将缓冲区中的日志输出 SocketHandler: 输出日志到网络 socket 中 StreamHandler: 输出日志到输入输出流对象中