背景
Apache MINA 体系允许基于 MINA 的应用的开发者使用他们自己的日志系统。
SLF4J
MINA 使用了简单日志门面 (Simple Logging Facade for Java,SLF4J)。你可以在这里找到 SLF4J 的信息。这个日志工具允许任意数量的日志系统的实现。你可以使用 log4j、java.util.logging 或者其他日志系统。这个的精彩之处在于如果你在以后的开发处理中将 java.util.logging 改为 log4j,你完全不需要修改你的源代码。
选择合适的 jar 包
SLF4J 使用静态绑定。这意味着每个支持的日志框架都有自己的一个 jar 文件。你可以通过选择调用了你静态选择的日志框架的 jar 文件使用你喜爱的日志框架。以下是使用特定日志框架所需 jar 包的列表:
| 日志框架 | 需要的 jar 包 |
| 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 |
有几件事要记住:
# 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,在你测试你的代码的时候你需要将此配置文件放在 JVM 的 classpath 下。
尽管这里演示了如何建立一个使用日志的 IoAcceptor,记住 SLF4J API 可能会在你的程序中的任何地方被使用,以生成适用于你的需求的恰当的日志信息。
接下来我们建立一个简单的示例服务器以生成一些日志。这里我们采用的是 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);
}
正如你所看到的,我们移除了 addLogger 方法并在 EchoServer 示例中添加了两行。通过 LoggingFilter 的引用,你可以为你的处理器中 IoAcceptor 关联到的每个事件类型设置日志级别。为了定义触发日志的 IoHandler 事件并指定所执行的日志级别,LoggingFilter 定义了一个叫做 setLogLevel(IoEventType, LogLevel) 方法。以下是为这一方法的选项:
| IO 事件类型 | 描述 |
| SESSION_CREATED | 在新会话被建立时调用 |
| SESSION_OPENED | 在新会话被打开时调用 |
| SESSION_CLOSED | 在会话被关闭时调用 |
| MESSAGE_RECEIVED | 接收到数据时调用 |
| MESSAGE_SENT | 消息被发送时调用 |
| SESSION_IDLE | 到达会话空闲时间时调用 |
| EXCEPTION_CAUGHT | 有异常抛出时调用 |
以下是为日志级别的描述:
| 日志级别 | 描述 |
| NONE | 这个将导致无视配置的存在而没有任何日志事件被创建 |
| TRACE | 在日志系统中创建一个 TRACE 事件 |
| DEBUG | 产生日志系统中的 debug 日志 |
| INFO | 产生日志系统中的信息消息日志 |
| WARN | 产生日志系统中的警告消息日志 |
| ERROR | 产生日志系统中的错误消息日志 |
使用这些信息,你足以建立一个基本的日志系统了,并可以在此示例基础上进行扩展以为你自己的系统产生日志信息。
原文链接: http://mina.apache.org/mina-project/userguide/ch12-logging-filter/ch12-logging-filter.html。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://defonds.blog.csdn.net/article/details/18229491
内容来源于网络,如有侵权,请联系作者删除!