1 | /* |
2 | * @(#) $Id: SessionLog.java 357871 2005-12-20 01:56:40Z trustin $ |
3 | * |
4 | * Copyright 2004 The Apache Software Foundation |
5 | * |
6 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | * you may not use this file except in compliance with the License. |
8 | * You may obtain a copy of the License at |
9 | * |
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
11 | * |
12 | * Unless required by applicable law or agreed to in writing, software |
13 | * distributed under the License is distributed on an "AS IS" BASIS, |
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
15 | * See the License for the specific language governing permissions and |
16 | * limitations under the License. |
17 | * |
18 | */ |
19 | package org.apache.mina.util; |
20 | |
21 | import org.apache.mina.common.Session; |
22 | import org.apache.mina.io.IoSession; |
23 | import org.apache.mina.protocol.ProtocolSession; |
24 | import org.slf4j.Logger; |
25 | import org.slf4j.LoggerFactory; |
26 | |
27 | /** |
28 | * Provides utility methods to log protocol-specific messages. |
29 | * <p> |
30 | * Set {@link #PREFIX} and {@link #LOGGER} session attributes |
31 | * to override prefix string and logger. |
32 | * |
33 | * @author The Apache Directory Project (dev@directory.apache.org) |
34 | * @version $Rev: 357871 $, $Date: 2005-12-20 10:56:40 +0900 (Tue, 20 Dec 2005) $ |
35 | * |
36 | */ |
37 | public class SessionLog { |
38 | /** |
39 | * Session attribute key: prefix string |
40 | */ |
41 | public static final String PREFIX = SessionLog.class.getName() + ".prefix"; |
42 | |
43 | /** |
44 | * Session attribute key: {@link Logger} |
45 | */ |
46 | public static final String LOGGER = SessionLog.class.getName() + ".logger"; |
47 | |
48 | public static Logger getLogger( Session session ) |
49 | { |
50 | Logger log = (Logger) session.getAttribute( LOGGER ); |
51 | if( log == null ) |
52 | { |
53 | log = LoggerFactory.getLogger( getClass( session ) ); |
54 | String prefix = ( String ) session.getAttribute( PREFIX ); |
55 | if( prefix == null ) |
56 | { |
57 | prefix = "[" + session.getRemoteAddress() + "] "; |
58 | session.setAttribute( PREFIX, prefix ); |
59 | } |
60 | |
61 | session.setAttribute( LOGGER, log ); |
62 | } |
63 | |
64 | return log; |
65 | } |
66 | |
67 | private static Class getClass( Session session ) |
68 | { |
69 | if( session instanceof IoSession ) |
70 | return ( ( IoSession ) session ).getHandler().getClass(); |
71 | else |
72 | return ( ( ProtocolSession ) session ).getHandler().getClass(); |
73 | } |
74 | |
75 | public static void debug( Session session, String message ) |
76 | { |
77 | Logger log = getLogger( session ); |
78 | if( log.isDebugEnabled() ) |
79 | { |
80 | log.debug( String.valueOf( session.getAttribute( PREFIX ) ) + message ); |
81 | } |
82 | } |
83 | |
84 | public static void debug( Session session, String message, Throwable cause ) |
85 | { |
86 | Logger log = getLogger( session ); |
87 | if( log.isDebugEnabled() ) |
88 | { |
89 | log.debug( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause ); |
90 | } |
91 | } |
92 | |
93 | public static void info( Session session, String message ) |
94 | { |
95 | Logger log = getLogger( session ); |
96 | if( log.isInfoEnabled() ) |
97 | { |
98 | log.info( String.valueOf( session.getAttribute( PREFIX ) ) + message ); |
99 | } |
100 | } |
101 | |
102 | public static void info( Session session, String message, Throwable cause ) |
103 | { |
104 | Logger log = getLogger( session ); |
105 | if( log.isInfoEnabled() ) |
106 | { |
107 | log.info( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause ); |
108 | } |
109 | } |
110 | |
111 | public static void warn( Session session, String message ) |
112 | { |
113 | Logger log = getLogger( session ); |
114 | if( log.isWarnEnabled() ) |
115 | { |
116 | log.warn( String.valueOf( session.getAttribute( PREFIX ) ) + message ); |
117 | } |
118 | } |
119 | |
120 | public static void warn( Session session, String message, Throwable cause ) |
121 | { |
122 | Logger log = getLogger( session ); |
123 | if( log.isWarnEnabled() ) |
124 | { |
125 | log.warn( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause ); |
126 | } |
127 | } |
128 | |
129 | public static void error( Session session, String message ) |
130 | { |
131 | Logger log = getLogger( session ); |
132 | if( log.isErrorEnabled() ) |
133 | { |
134 | log.error( String.valueOf( session.getAttribute( PREFIX ) ) + message ); |
135 | } |
136 | } |
137 | |
138 | public static void error( Session session, String message, Throwable cause ) |
139 | { |
140 | Logger log = getLogger( session ); |
141 | if( log.isErrorEnabled() ) |
142 | { |
143 | log.error( String.valueOf( session.getAttribute( PREFIX ) ) + message, cause ); |
144 | } |
145 | } |
146 | } |