<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>LoggingFilter xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/filter/logging/LoggingFilter.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> *  Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> *  or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> *  distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> *  regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> *  to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> *  "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *  with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *    <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *  Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *  software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> *  KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> *  specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> *  under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.filter.logging;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.filterchain.IoFilter;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.filterchain.IoFilterAdapter;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IdleStatus;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoEventType;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.write.WriteRequest;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment">/**</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * Logs all MINA protocol events.  Each event can be</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * tuned to use a different level based on the user's specific requirements.  Methods</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * are in place that allow the user to use either the get or set method for each event</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * and pass in the {@link IoEventType} and the {@link LogLevel}.</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> *</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * By default, all events are logged to the {@link LogLevel#INFO} level except</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * {@link IoFilterAdapter#exceptionCaught(IoFilter.NextFilter, IoSession, Throwable)},</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * which is logged to {@link LogLevel#WARN}.</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> *</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * @version $Rev: 706057 $, $Date: 2008-10-19 21:40:20 +0200 (Sun, 19 Oct 2008) $</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * @org.apache.xbean.XBean</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> */</em>
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/logging/LoggingFilter.html">LoggingFilter</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/mina/core/filterchain/IoFilterAdapter.html">IoFilterAdapter</a> {
<a name="46" href="#46">46</a>  	<em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The logger name */</em>
<a name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String name;
<a name="48" href="#48">48</a>      
<a name="49" href="#49">49</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The logger */</em>
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Logger logger;
<a name="51" href="#51">51</a>      
<a name="52" href="#52">52</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the exceptionCaught event. Default to WARN. */</em>
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> exceptionCaughtLevel = LogLevel.WARN;
<a name="54" href="#54">54</a>      
<a name="55" href="#55">55</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the messageSent event. Default to INFO. */</em>
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> messageSentLevel = LogLevel.INFO;
<a name="57" href="#57">57</a>      
<a name="58" href="#58">58</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the messageReceived event. Default to INFO. */</em>
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> messageReceivedLevel = LogLevel.INFO;
<a name="60" href="#60">60</a>      
<a name="61" href="#61">61</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the sessionCreated event. Default to INFO. */</em>
<a name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> sessionCreatedLevel = LogLevel.INFO;
<a name="63" href="#63">63</a>      
<a name="64" href="#64">64</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the sessionOpened event. Default to INFO. */</em>
<a name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> sessionOpenedLevel = LogLevel.INFO;
<a name="66" href="#66">66</a>      
<a name="67" href="#67">67</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the sessionIdle event. Default to INFO. */</em>
<a name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> sessionIdleLevel = LogLevel.INFO;
<a name="69" href="#69">69</a>      
<a name="70" href="#70">70</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The log level for the sessionClosed event. Default to INFO. */</em>
<a name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> sessionClosedLevel = LogLevel.INFO;
<a name="72" href="#72">72</a>      
<a name="73" href="#73">73</a>      <em class="jxr_javadoccomment">/**</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     * Default Constructor.</em>
<a name="75" href="#75">75</a>  <em class="jxr_javadoccomment">     */</em>
<a name="76" href="#76">76</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LoggingFilter.html">LoggingFilter</a>() {
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">this</strong>(LoggingFilter.<strong class="jxr_keyword">class</strong>.getName());
<a name="78" href="#78">78</a>      }
<a name="79" href="#79">79</a>      
<a name="80" href="#80">80</a>      <em class="jxr_javadoccomment">/**</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * Create a new NoopFilter using a class name</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * </em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @param clazz the cass which name will be used to create the logger</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     */</em>
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LoggingFilter.html">LoggingFilter</a>(Class&lt;?&gt; clazz) {
<a name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>(clazz.getName());
<a name="87" href="#87">87</a>      }
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>      <em class="jxr_javadoccomment">/**</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     * Create a new NoopFilter using a name</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     * </em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     * @param name the name used to create the logger. If null, will default to "NoopFilter"</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     */</em>
<a name="94" href="#94">94</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LoggingFilter.html">LoggingFilter</a>(String name) {
<a name="95" href="#95">95</a>          <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a name="96" href="#96">96</a>              <strong class="jxr_keyword">this</strong>.name = LoggingFilter.<strong class="jxr_keyword">class</strong>.getName();
<a name="97" href="#97">97</a>          } <strong class="jxr_keyword">else</strong> {
<a name="98" href="#98">98</a>          	<strong class="jxr_keyword">this</strong>.name = name;
<a name="99" href="#99">99</a>          }
<a name="100" href="#100">100</a>         
<a name="101" href="#101">101</a>         logger = LoggerFactory.getLogger(name);
<a name="102" href="#102">102</a>     }
<a name="103" href="#103">103</a> 
<a name="104" href="#104">104</a>     <em class="jxr_javadoccomment">/**</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @return The logger's name</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     */</em>
<a name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> String getName() {
<a name="108" href="#108">108</a>         <strong class="jxr_keyword">return</strong> name;
<a name="109" href="#109">109</a>     }
<a name="110" href="#110">110</a>     
<a name="111" href="#111">111</a>     <em class="jxr_javadoccomment">/**</em>
<a name="112" href="#112">112</a> <em class="jxr_javadoccomment">     * Log if the logger and the current event log level are compatible. We log</em>
<a name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * a message and an exception.</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">     * </em>
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * @param eventLevel the event log level as requested by the user</em>
<a name="116" href="#116">116</a> <em class="jxr_javadoccomment">     * @param message the message to log</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * @param cause the exception cause to log</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">     */</em>
<a name="119" href="#119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> log(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> eventLevel, String message, Throwable cause) {
<a name="120" href="#120">120</a>     	<strong class="jxr_keyword">if</strong> (eventLevel == LogLevel.TRACE) {
<a name="121" href="#121">121</a>     		logger.trace(message, cause);
<a name="122" href="#122">122</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.INFO.getLevel()) {
<a name="123" href="#123">123</a>     		logger.info(message, cause);
<a name="124" href="#124">124</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.WARN.getLevel()) {
<a name="125" href="#125">125</a>     		logger.warn(message, cause);
<a name="126" href="#126">126</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.ERROR.getLevel()) {
<a name="127" href="#127">127</a>     		logger.error(message, cause);
<a name="128" href="#128">128</a>     	}
<a name="129" href="#129">129</a>     }
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>     <em class="jxr_javadoccomment">/**</em>
<a name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * Log if the logger and the current event log level are compatible. We log</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * a formated message and its parameters. </em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * </em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">     * @param eventLevel the event log level as requested by the user</em>
<a name="136" href="#136">136</a> <em class="jxr_javadoccomment">     * @param message the formated message to log</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">     * @param param the parameter injected into the message</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     */</em>
<a name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> log(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> eventLevel, String message, Object param) {
<a name="140" href="#140">140</a>     	<strong class="jxr_keyword">if</strong> (eventLevel == LogLevel.TRACE) {
<a name="141" href="#141">141</a>     		logger.trace(message, param);
<a name="142" href="#142">142</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.INFO.getLevel()) {
<a name="143" href="#143">143</a>     		logger.info(message, param);
<a name="144" href="#144">144</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.WARN.getLevel()) {
<a name="145" href="#145">145</a>     		logger.warn(message, param);
<a name="146" href="#146">146</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.ERROR.getLevel()) {
<a name="147" href="#147">147</a>     		logger.error(message, param);
<a name="148" href="#148">148</a>     	} 
<a name="149" href="#149">149</a>     }
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>     <em class="jxr_javadoccomment">/**</em>
<a name="152" href="#152">152</a> <em class="jxr_javadoccomment">     * Log if the logger and the current event log level are compatible. We log</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     * a simple message. </em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">     * </em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * @param eventLevel the event log level as requested by the user</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">     * @param message the message to log</em>
<a name="157" href="#157">157</a> <em class="jxr_javadoccomment">     */</em>
<a name="158" href="#158">158</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> log(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> eventLevel, String message) {
<a name="159" href="#159">159</a>     	<strong class="jxr_keyword">if</strong> (eventLevel == LogLevel.TRACE) {
<a name="160" href="#160">160</a>     		logger.trace(message);
<a name="161" href="#161">161</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.INFO.getLevel()) {
<a name="162" href="#162">162</a>     		logger.info(message);
<a name="163" href="#163">163</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.WARN.getLevel()) {
<a name="164" href="#164">164</a>     		logger.warn(message);
<a name="165" href="#165">165</a>     	} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (eventLevel.getLevel() &gt; LogLevel.ERROR.getLevel()) {
<a name="166" href="#166">166</a>     		logger.error(message);
<a name="167" href="#167">167</a>     	}
<a name="168" href="#168">168</a>     }
<a name="169" href="#169">169</a> 
<a name="170" href="#170">170</a>     @Override
<a name="171" href="#171">171</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> exceptionCaught(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session,
<a name="172" href="#172">172</a>             Throwable cause) <strong class="jxr_keyword">throws</strong> Exception {
<a name="173" href="#173">173</a>     	log(exceptionCaughtLevel, <span class="jxr_string">"EXCEPTION :"</span>, cause);
<a name="174" href="#174">174</a>         nextFilter.exceptionCaught(session, cause);
<a name="175" href="#175">175</a>     }
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>     @Override
<a name="178" href="#178">178</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> messageReceived(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session,
<a name="179" href="#179">179</a>             Object message) <strong class="jxr_keyword">throws</strong> Exception {
<a name="180" href="#180">180</a>     	log(messageReceivedLevel, <span class="jxr_string">"RECEIVED: {}"</span>, message );
<a name="181" href="#181">181</a>     	nextFilter.messageReceived(session, message);
<a name="182" href="#182">182</a>     }
<a name="183" href="#183">183</a> 
<a name="184" href="#184">184</a>     @Override
<a name="185" href="#185">185</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> messageSent(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session,
<a name="186" href="#186">186</a>             <a href="../../../../../org/apache/mina/core/write/WriteRequest.html">WriteRequest</a> writeRequest) <strong class="jxr_keyword">throws</strong> Exception {
<a name="187" href="#187">187</a>     	log(messageSentLevel, <span class="jxr_string">"SENT: {}"</span>, writeRequest.getMessage() );
<a name="188" href="#188">188</a>         nextFilter.messageSent(session, writeRequest);
<a name="189" href="#189">189</a>     }
<a name="190" href="#190">190</a> 
<a name="191" href="#191">191</a>     @Override
<a name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionCreated(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session)
<a name="193" href="#193">193</a>     		<strong class="jxr_keyword">throws</strong> Exception {
<a name="194" href="#194">194</a>     	log(sessionCreatedLevel, <span class="jxr_string">"CREATED"</span>);
<a name="195" href="#195">195</a>         nextFilter.sessionCreated(session);
<a name="196" href="#196">196</a>     }
<a name="197" href="#197">197</a> 
<a name="198" href="#198">198</a>     @Override
<a name="199" href="#199">199</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionOpened(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session)
<a name="200" href="#200">200</a>     <strong class="jxr_keyword">throws</strong> Exception {
<a name="201" href="#201">201</a>     	log(sessionOpenedLevel, <span class="jxr_string">"OPENED"</span>);
<a name="202" href="#202">202</a>         nextFilter.sessionOpened(session);
<a name="203" href="#203">203</a>     }
<a name="204" href="#204">204</a> 
<a name="205" href="#205">205</a>     @Override
<a name="206" href="#206">206</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionIdle(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session,
<a name="207" href="#207">207</a>             <a href="../../../../../org/apache/mina/core/session/IdleStatus.html">IdleStatus</a> status) <strong class="jxr_keyword">throws</strong> Exception {
<a name="208" href="#208">208</a>     	log(sessionIdleLevel, <span class="jxr_string">"IDLE"</span>);
<a name="209" href="#209">209</a>         nextFilter.sessionIdle(session, status);
<a name="210" href="#210">210</a>     }
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>     @Override
<a name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionClosed(<a href="../../../../../org/apache/mina/core/filterchain/IoFilter.html">NextFilter</a> nextFilter, <a href="../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session) <strong class="jxr_keyword">throws</strong> Exception {
<a name="214" href="#214">214</a>     	log(sessionClosedLevel, <span class="jxr_string">"CLOSED"</span>);
<a name="215" href="#215">215</a>         nextFilter.sessionClosed(session);
<a name="216" href="#216">216</a>     }
<a name="217" href="#217">217</a>     
<a name="218" href="#218">218</a>     <em class="jxr_javadoccomment">/**</em>
<a name="219" href="#219">219</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the ExceptionCaught event.</em>
<a name="220" href="#220">220</a> <em class="jxr_javadoccomment">     * </em>
<a name="221" href="#221">221</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="222" href="#222">222</a> <em class="jxr_javadoccomment">     */</em>
<a name="223" href="#223">223</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setExceptionCaughtLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="224" href="#224">224</a>     	exceptionCaughtLevel = level;
<a name="225" href="#225">225</a>     }
<a name="226" href="#226">226</a>     
<a name="227" href="#227">227</a>     <em class="jxr_javadoccomment">/**</em>
<a name="228" href="#228">228</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the ExceptionCaught event.</em>
<a name="229" href="#229">229</a> <em class="jxr_javadoccomment">     * </em>
<a name="230" href="#230">230</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the ExceptionCaught eventType</em>
<a name="231" href="#231">231</a> <em class="jxr_javadoccomment">     */</em>
<a name="232" href="#232">232</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getExceptionCaughtLoglevel() {
<a name="233" href="#233">233</a>     	<strong class="jxr_keyword">return</strong> exceptionCaughtLevel;
<a name="234" href="#234">234</a>     }
<a name="235" href="#235">235</a>     
<a name="236" href="#236">236</a>     <em class="jxr_javadoccomment">/**</em>
<a name="237" href="#237">237</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the MessageReceived event.</em>
<a name="238" href="#238">238</a> <em class="jxr_javadoccomment">     * </em>
<a name="239" href="#239">239</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="240" href="#240">240</a> <em class="jxr_javadoccomment">     */</em>
<a name="241" href="#241">241</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMessageReceivedLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="242" href="#242">242</a>     	messageReceivedLevel = level;
<a name="243" href="#243">243</a>     }
<a name="244" href="#244">244</a>     
<a name="245" href="#245">245</a>     <em class="jxr_javadoccomment">/**</em>
<a name="246" href="#246">246</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the MessageReceived event.</em>
<a name="247" href="#247">247</a> <em class="jxr_javadoccomment">     * </em>
<a name="248" href="#248">248</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the MessageReceived eventType</em>
<a name="249" href="#249">249</a> <em class="jxr_javadoccomment">     */</em>
<a name="250" href="#250">250</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getMessageReceivedLoglevel() {
<a name="251" href="#251">251</a>     	<strong class="jxr_keyword">return</strong> messageReceivedLevel;
<a name="252" href="#252">252</a>     }
<a name="253" href="#253">253</a>     
<a name="254" href="#254">254</a>     <em class="jxr_javadoccomment">/**</em>
<a name="255" href="#255">255</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the MessageSent event.</em>
<a name="256" href="#256">256</a> <em class="jxr_javadoccomment">     * </em>
<a name="257" href="#257">257</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="258" href="#258">258</a> <em class="jxr_javadoccomment">     */</em>
<a name="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMessageSentLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="260" href="#260">260</a>     	messageSentLevel = level;
<a name="261" href="#261">261</a>     }
<a name="262" href="#262">262</a>     
<a name="263" href="#263">263</a>     <em class="jxr_javadoccomment">/**</em>
<a name="264" href="#264">264</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the MessageSent event.</em>
<a name="265" href="#265">265</a> <em class="jxr_javadoccomment">     * </em>
<a name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the MessageSent eventType</em>
<a name="267" href="#267">267</a> <em class="jxr_javadoccomment">     */</em>
<a name="268" href="#268">268</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getMessageSentLoglevel() {
<a name="269" href="#269">269</a>     	<strong class="jxr_keyword">return</strong> messageSentLevel;
<a name="270" href="#270">270</a>     }
<a name="271" href="#271">271</a>     
<a name="272" href="#272">272</a>     <em class="jxr_javadoccomment">/**</em>
<a name="273" href="#273">273</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the SessionCreated event.</em>
<a name="274" href="#274">274</a> <em class="jxr_javadoccomment">     * </em>
<a name="275" href="#275">275</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="276" href="#276">276</a> <em class="jxr_javadoccomment">     */</em>
<a name="277" href="#277">277</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionCreatedLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="278" href="#278">278</a>     	sessionCreatedLevel = level;
<a name="279" href="#279">279</a>     }
<a name="280" href="#280">280</a>     
<a name="281" href="#281">281</a>     <em class="jxr_javadoccomment">/**</em>
<a name="282" href="#282">282</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the SessionCreated event.</em>
<a name="283" href="#283">283</a> <em class="jxr_javadoccomment">     * </em>
<a name="284" href="#284">284</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the SessionCreated eventType</em>
<a name="285" href="#285">285</a> <em class="jxr_javadoccomment">     */</em>
<a name="286" href="#286">286</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getSessionCreatedLoglevel() {
<a name="287" href="#287">287</a>     	<strong class="jxr_keyword">return</strong> sessionCreatedLevel;
<a name="288" href="#288">288</a>     }
<a name="289" href="#289">289</a>     
<a name="290" href="#290">290</a>     <em class="jxr_javadoccomment">/**</em>
<a name="291" href="#291">291</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the SessionOpened event.</em>
<a name="292" href="#292">292</a> <em class="jxr_javadoccomment">     * </em>
<a name="293" href="#293">293</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="294" href="#294">294</a> <em class="jxr_javadoccomment">     */</em>
<a name="295" href="#295">295</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionOpenedLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="296" href="#296">296</a>     	sessionOpenedLevel = level;
<a name="297" href="#297">297</a>     }
<a name="298" href="#298">298</a>     
<a name="299" href="#299">299</a>     <em class="jxr_javadoccomment">/**</em>
<a name="300" href="#300">300</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the SessionOpened event.</em>
<a name="301" href="#301">301</a> <em class="jxr_javadoccomment">     * </em>
<a name="302" href="#302">302</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the SessionOpened eventType</em>
<a name="303" href="#303">303</a> <em class="jxr_javadoccomment">     */</em>
<a name="304" href="#304">304</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getSessionOpenedLoglevel() {
<a name="305" href="#305">305</a>     	<strong class="jxr_keyword">return</strong> sessionOpenedLevel;
<a name="306" href="#306">306</a>     }
<a name="307" href="#307">307</a>     
<a name="308" href="#308">308</a>     <em class="jxr_javadoccomment">/**</em>
<a name="309" href="#309">309</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the SessionIdle event.</em>
<a name="310" href="#310">310</a> <em class="jxr_javadoccomment">     * </em>
<a name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="312" href="#312">312</a> <em class="jxr_javadoccomment">     */</em>
<a name="313" href="#313">313</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionIdleLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="314" href="#314">314</a>     	sessionIdleLevel = level;
<a name="315" href="#315">315</a>     }
<a name="316" href="#316">316</a>     
<a name="317" href="#317">317</a>     <em class="jxr_javadoccomment">/**</em>
<a name="318" href="#318">318</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the SessionIdle event.</em>
<a name="319" href="#319">319</a> <em class="jxr_javadoccomment">     * </em>
<a name="320" href="#320">320</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the SessionIdle eventType</em>
<a name="321" href="#321">321</a> <em class="jxr_javadoccomment">     */</em>
<a name="322" href="#322">322</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getSessionIdleLoglevel() {
<a name="323" href="#323">323</a>     	<strong class="jxr_keyword">return</strong> sessionIdleLevel;
<a name="324" href="#324">324</a>     }
<a name="325" href="#325">325</a>     
<a name="326" href="#326">326</a>     <em class="jxr_javadoccomment">/**</em>
<a name="327" href="#327">327</a> <em class="jxr_javadoccomment">     * Set the LogLevel for the SessionClosed event.</em>
<a name="328" href="#328">328</a> <em class="jxr_javadoccomment">     * </em>
<a name="329" href="#329">329</a> <em class="jxr_javadoccomment">     * @param level The LogLevel to set</em>
<a name="330" href="#330">330</a> <em class="jxr_javadoccomment">     */</em>
<a name="331" href="#331">331</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setSessionClosedLoglevel(<a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> level) {
<a name="332" href="#332">332</a>     	sessionClosedLevel = level;
<a name="333" href="#333">333</a>     }
<a name="334" href="#334">334</a> 
<a name="335" href="#335">335</a>     <em class="jxr_javadoccomment">/**</em>
<a name="336" href="#336">336</a> <em class="jxr_javadoccomment">     * Get the LogLevel for the SessionClosed event.</em>
<a name="337" href="#337">337</a> <em class="jxr_javadoccomment">     * </em>
<a name="338" href="#338">338</a> <em class="jxr_javadoccomment">     * @return The LogLevel for the SessionClosed eventType</em>
<a name="339" href="#339">339</a> <em class="jxr_javadoccomment">     */</em>
<a name="340" href="#340">340</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/filter/logging/LogLevel.html">LogLevel</a> getSessionClosedLoglevel() {
<a name="341" href="#341">341</a>     	<strong class="jxr_keyword">return</strong> sessionClosedLevel;
<a name="342" href="#342">342</a>     }
<a name="343" href="#343">343</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

