一、背景
MINA框架允许开发人员在编写基于MINA的应用程序时使用自己熟悉的日志系统。
二、SLF4J
MINA框架使用Simple Logging Facade for Java (SLF4J)。你可以在这里
获取到更多关于SLF4J的信息,这种日志系统兼容各种日志系统的实现。你可能会使用log4j、java.util.logging或其他的日志系统,使用这种日志框架的好处在于如果你在开发过程中,将日志系统从java.util.logging改为log4j,你根本需要修改你的代码。
选择正确的jar包
Logging framework
|
Required JARs
|
Log4J 1.2.x |
slf4j-api.jar
,
slf4j-log4j12.jar
|
Log4J 1.3.x |
slf4j-api.jar
,
slf4j-log4j13.jar
|
java.util.logging
|
slf4j-api.jar
,
slf4j-jdk14.jar
|
Commons Logging |
slf4j-api.jar
,
slf4j-jcl.jar
|
下面几点还需要注意:
- 对于任意一种日志系统,slf4j-api.jar是必须的;
- 重要:在classpath上不能放置多于一个日志系统实现jar包(例如slf4j-log4j12.jar and slf4j-jdk14.jar),这将导致日志出席不可预知的行为;
- slf4j-api.jar 和 slf4j-<impl>.jar的版本应该是一致的。
如果SLF4J配置正确,你可以继续配置你真正使用的日志系统(例如修改log4j.properties
)。
重载Jakarta Commons Logging
SLF4J提供了一种机制可以使现有的应用程序从使用Jakarta Commons
Logging变更为SLF4J而不需要修改代码,只需要将commons-loggong
JAR文件充classpath中除去,并将jcl104-over-slf4j.jar
加入到classpath中。
三、log4j范例
我们以log4j为例,然后将下面的代码片段加入到log4j.properties中:
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c{1} %x - %m%n
我们将这个文件放置在工程的src目录中,如果你使用IDE,当你测试代码是,你实际上是想把这个文件放置在classpath上。
注意
:这里只是在IoAcceptor
上设置了日志,但slf4j
可以在程序中广泛使用,有了它的帮助,你可以根据需要获取到有用的信息。
下面我们编写一个简单的server从而生成一些日志信息,这里我们使用EchoServer
的范例工程来增加日志:
public static void main(String[] args) throws Exception {
IoAcceptor acceptor = new SocketAcceptor();
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
LoggingFilter loggingFilter = new LoggingFilter();
chain.addLast("logging", loggingFilter);
acceptor.setLocalAddress(new InetSocketAddress(PORT));
acceptor.setHandler(new EchoProtocolHandler());
acceptor.bind();
System.out.println("Listening on port " + PORT);
}
正如你所见,在EchoServer
范例中,我们删除了addLogger方法并新增加了两行代码。通过LoggingFilter
的引用,你可以在这里设置与IoAcceptor
相关的所有事件的日志级别。在这里,可以使用LoggingFilter
中的setLogLevel(IoEventType,
LogLevel)方法来区分触发IoHandler日志的时间以及对应的日志级别,下面是这个方法选项:
IoEventType
|
Description
|
SESSION_CREATED |
一个新的session被创建时触发 |
SESSION_OPENED |
一个新的session打开时触发 |
SESSION_CLOSED |
一个session被关闭时触发 |
MESSAGE_RECEIVED |
接收到数据时触发 |
MESSAGE_SENT |
数据被发送后触发 |
SESSION_IDLE |
一个session空闲了一定时间后触发 |
EXCEPTION_CAUGHT |
当有异常抛出时触发 |
下面是日志级别的描述:
LogLevel
|
Description
|
NONE |
无论如何配置,日志都不会产生 |
TRACE |
在日志系统中创建一个TRACE事件 |
DEBUG |
在日志系统中生成debug信息 |
INFO |
在日志系统中生成提示信息 |
WARN |
在日志系统中生成警告信息 |
ERROR |
在日志系统中生成错误信息 |
根据这些信息,你应该可以扩展这些范例来构建一个使用日志的简单系统,这些日志将为你提供有用的信息。
分享到:
相关推荐
MINA2官方教程翻译 比较全面,比1.0版本先进多了
在本项目中,SLF4J被用作日志接口,而Log4j是实际的日志实现,提供日志记录、配置、级别控制等功能。 Log4j是Apache的一个开源项目,它提供了灵活的日志记录功能,包括控制日志输出级别、定制日志格式、支持多个...
MINA官方教程(中文版).docx文件可能包含了关于如何安装MINA、设置项目、创建基本的服务器和客户端、理解和使用过滤器系统、编码和解码策略、异常处理、性能优化等方面的详细内容。通过学习这个教程,开发者可以...
学习Mina2框架,可以通过阅读官方文档、参考教程和开源项目,理解其设计理念和使用方式。同时,深入研究提供的实例代码,有助于快速掌握Mina2的实际应用。 总结,Mina2作为一个强大的网络通信框架,为企业级的网络...
《Apache Mina2官方教程翻译》是Mina2的官方文档中文版,详细介绍了如何使用Mina进行网络编程。这份文档将帮助你理解Mina的核心概念,包括过滤器链、事件驱动模型和I/O多路复用技术。通过学习,你可以了解到如何创建...
标题提到的是"apache-mina-2.0.7 含官方教程",这意味着我们正在讨论Apache MINA的2.0.7版本,并且有一个官方教程,这个教程是中文版的,方便中文使用者学习。描述中提及了"apache-mina-2.0.7-bin.zip",这是一个...
Apache Mina 框架是一个强大的网络通信应用框架,它主要针对基于TCP/IP和UDP/IP的协议栈,同时也支持Java对象序列化和其他通信方式。Mina 的核心设计目标是帮助开发者快速构建高性能、高可扩展性的网络应用。它采用...
《Mina官方教程_中文版》是一份专为学习Mina框架的中文教育资源,它涵盖了Mina框架的基础知识、核心概念以及实际应用技巧。Mina(MinA Socket API)是Apache软件基金会的一个开源项目,主要设计用于构建高性能、高可...
Mina使用详细教程,这里有详细步骤,和netty是一个母亲
MINA2.0入门教程(适合刚接触的人)
在这个"MINA2 教程 socket"中,我们将探讨如何使用MINA2来实现服务器与客户端之间的通信,并且支持同时在线连接,以及如何利用`newFixedThreadPool`线程池来优化处理并发连接。 1. **MINA2基本概念**: MINA2的...
在这个压缩包中,包含了“Java_NIO基础视频教程”和“MINA视频教程”,你可以通过观看这些教程,了解和学习NIO和Mina的基本用法。同时,“Netty快速入门视频(52im.net).txt”虽然不是直接与Mina相关的,但Netty也是...
线程模型是MINA的另一个关键配置项。MINA提供了多种线程模型,如简单的单线程模型、多线程模型以及Event-driven模型。选择合适的线程模型可以根据应用的并发需求来调整性能和资源消耗。 了解以上知识点是掌握Apache...
自己整理的一些mina学习资料,内含MINA官方教程(中文版).docx,MINA-2.0.0-M4.chm(英文版),Apache_Mina_Server_2.0中文参考手册V1.0.pdf, 还有mina的包
在MINA的官方文档中,首先强调了其提供的抽象的事件驱动的异步API。这表示MINA并不直接处理底层的字节流,而是将网络操作抽象成事件,并触发相应的事件处理器来响应这些事件。这种设计大大简化了网络编程模型,让...
2. **Apache_Mina_Server_2%5B1%5D.0%E4%B8%AD%E6%96%87%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8CV1.0.pdf**:这是一份中文版的Apache Mina Server 2.0.0教程,可能涵盖了如何配置和使用Mina服务器端的基本概念、配置...
### Apache Mina 2: 构建高性能网络应用的核心知识点 #### 一、Apache Mina 2 概述 **Apache Mina 2**(简称为Mina)是一款由Apache基金会支持的开源网络应用程序框架,专门用于开发高性能及高可扩展性的网络应用...