001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.fukurou.util;
017
018 // import java.text.DateFormat;
019 // import java.text.SimpleDateFormat;
020 // import java.util.Date;
021 // import java.util.Locale;
022
023 /**
024 * Logを書き込ã‚?‚ºの LogWriter を呼び出ã�?簡易クラスですã?
025 *
026 * Log の書き込み日時や?Œキー(識別ID)などをå?力しますã?
027 *
028 * @og.group エラー処ç�?
029 *
030 * @version 4.0
031 * @author Kazuhiko Hasegawa
032 * @since JDK5.0,
033 */
034 public final class LogSender {
035
036 /** Log出力レベル FATAL {@value} */
037 public static final int FATAL = 4;
038 /** Log出力レベル ERROR {@value} */
039 public static final int ERROR = 3;
040 /** Log出力レベル WARNING {@value} */
041 public static final int WARNING = 2;
042 /** Log出力レベル INFORMATION {@value} */
043 public static final int INFORMATION = 1;
044 /** Log出力レベル DEBUG {@value} */
045 public static final int DEBUG = 0;
046
047 private static final int LOG_LEVEL = ERROR; // 初期値
048
049 private final String userId;
050 private final int logLevel;
051 private String guiId = null;
052 private String msgId = null;
053 private StringBuilder buf = null;
054
055 /** シスãƒ?ƒ 依存ã?改行記号をセãƒ?ƒˆしますã? */
056 private static final String CR = System.getProperty("line.separator");
057
058 /**
059 * ãƒ?ƒ•ォルトコンストラクター
060 *
061 */
062 public LogSender() {
063 this( null,LOG_LEVEL );
064 }
065
066 /**
067 * ユーザーIDを与えてのコンストラクター
068 * ユーザーIDは?ŒLogの識別IDとして使用しますã?
069 *
070 * @param userId ユーザーID
071 */
072 public LogSender( final String userId ) {
073 this( userId,LOG_LEVEL );
074 }
075
076 /**
077 * ユーザーIDと、ログレベルを与えてのコンストラクター
078 * ユーザーIDは?ŒLogの識別IDとして使用しますã?
079 * ログレベルは?? ??4 の数字で、大きくなるほど、å?力条件はきつくなりますã?
080 * 0:DEBUG, 1:INFORMATION, 2:WARNING, 3:ERROR, 4:FATAL
081 * 初期値はã€?:ERROR ですã?
082 *
083 * @param userId ユーザーID
084 * @param logLbl ログレベル(0 ??4 の数å?
085 */
086 public LogSender( final String userId,final int logLbl ) {
087 this.userId = userId;
088 logLevel = logLbl;
089 // buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
090 buf = new StringBuilder( 200 ); // 4.1.0.1 (2008/01/23)
091
092 if( logLevel < DEBUG || logLevel > FATAL ) {
093 String errMsg = "ログレベルのæŒ?®šレベルがã?間違ってã�?�¾すã?"
094 + "æŒ?®šレベル=[" + logLbl + "]"
095 + " æŒ?®š可能レベル="
096 + DEBUG + " ??" + FATAL ;
097 // throw new HybsSystemException( errMsg );
098 throw new RuntimeException( errMsg );
099 }
100 }
101
102 /**
103 * 画面IDを設定しますã?
104 * ログé›?¨ˆ時の参è?æƒ??に使ã�?�¾すã?
105 *
106 * @param guiId 画面ID
107 */
108 public void setGuiId( final String guiId ) {
109 this.guiId = guiId;
110 }
111
112 /**
113 * メãƒ?‚»ージIDを設定しますã?
114 * ログé›?¨ˆ時の参è?æƒ??に使ã�?�¾すã?
115 *
116 * @param msgId メãƒ?‚»ージID
117 */
118 public void setMsgId( final String msgId ) {
119 this.msgId = msgId;
120 }
121
122 /**
123 * Logレベルを取得しますã?
124 * ログレベルは, FATAL,ERROR,WARNING,INFORMATION,DEBUG から選べますã?
125 *
126 * @return Logレベル
127 */
128 public int getLogLevel() {
129 return logLevel;
130 }
131
132 /**
133 * LogをLogWriter に渡しますã?
134 * DEBUG ログレベルと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
135 * 比è¼?�—て, ログレベルが小さã�??合ã?,出力しませんã€?
136 *
137 * @param message メãƒ?‚»ージ
138 */
139 public void debug( final String message ) {
140 if( DEBUG < logLevel ) { return; }
141 log( "DEBUG",message ) ;
142 }
143
144 /**
145 * LogをLogWriter に渡しますã?
146 * INFORMATION ログレベルと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
147 * 比è¼?�—て, ログレベルが小さã�??合ã?,出力しませんã€?
148 *
149 * @param message メãƒ?‚»ージ
150 */
151 public void info( final String message ) {
152 if( INFORMATION < logLevel ) { return; }
153 log( "INFO",message ) ;
154 }
155
156 /**
157 * LogをLogWriter に渡しますã?
158 * WARNING ログレベルと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
159 * 比è¼?�—て, ログレベルが小さã�??合ã?,出力しませんã€?
160 *
161 * @param message メãƒ?‚»ージ
162 */
163 public void warn( final String message ) {
164 if( WARNING < logLevel ) { return; }
165 log( "WARNING",message ) ;
166 }
167
168 /**
169 * LogをLogWriter に渡しますã?
170 * ERROR ログレベルと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
171 * 比è¼?�—て, ログレベルが小さã�??合ã?,出力しませんã€?
172 *
173 * @param message メãƒ?‚»ージ
174 */
175 public void error( final String message ) {
176 if( ERROR < logLevel ) { return; }
177 log( "ERROR",message ) ;
178 }
179
180 /**
181 * LogをLogWriter に渡しますã?
182 * FATAL ログレベルと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
183 * 比è¼?�—て, ログレベルが小さã�??合ã?,出力しませんã€?
184 *
185 * @param message メãƒ?‚»ージ
186 */
187 public void fatal( final String message ) {
188 if( FATAL < logLevel ) { return; }
189 log( "FATAL",message ) ;
190 }
191
192 /**
193 * LogをLogWriter に渡しますã?
194 * ただし,引数でセãƒ?ƒˆしたLoglevelと?Œあらかじめ設定されてã�?‚‹Logレベルã‚?
195 * 比è¼?�—て, 引数のLoglebelの方が小さã�??合ã?,出力しませんã€?
196 * ログレベルは, FATAL,ERROR,WARNING,INFORMATION,DEBUG から選べますã?
197 *
198 * @og.rev 3.5.5.4 (2004/04/15) ログにエラーレベルを記述しますã?
199 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正しますã?
200 *
201 * @param level ログレベル(FATAL,ERROR,WARNING,INFORMATION,DEBUG)
202 * @param message メãƒ?‚»ージ
203 */
204 private void log( final String level ,final String message ) {
205 buf.append( "[" );
206 buf.append( level );
207 // buf.append( " : Time=" ).append( HybsSystem.getDate() );
208 // DateFormat formatter = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss.SSS",Locale.JAPAN );
209 // buf.append( " : Time=" ).append( formatter.format( new Date() ) ); // 4.1.0.1 (2008/01/23)
210 buf.append( " : Time=" ).append( HybsDateUtil.getDate( "yyyy/MM/dd HH:mm:ss.SSS" ) ); // 5.5.7.2 (2012/10/09) HybsDateUtil を利用
211 buf.append( " , User=" ).append( userId );
212 buf.append( " , Gui=" ).append( guiId );
213 buf.append( " , Msg=" ).append( msgId );
214 buf.append( "]");
215 buf.append( CR );
216 buf.append( message );
217 }
218
219 /**
220 * LogWriter をæ?示çš?�«close() しますã?
221 * LogWriter は?Œå?部çš?�« キャãƒ?‚·ュを持っており,初めてアクセスされたå?合に
222 * すでにオブジェクトが存在してã�?‚Œば,それを使ã�?無ければ 新たに追åŠ?ƒ¢ードで
223 * PrintWriter を作æ?しますã?
224 * よって?Œæ?示çš?�«close()するå¿?¦�æ?は ほとんど有りませんã€?
225 *
226 */
227 public void flush() {
228 LogWriter.log( buf.toString() );
229 }
230
231 /**
232 * LogWriter をæ?示çš?�«close() しますã?
233 * LogWriter は?Œå?部çš?�« キャãƒ?‚·ュを持っており,初めてアクセスされたå?合に
234 * すでにオブジェクトが存在してã�?‚Œば,それを使ã�?無ければ 新たに追åŠ?ƒ¢ードで
235 * PrintWriter を作æ?しますã?
236 * よって?Œæ?示çš?�«close()するå¿?¦�æ?は ほとんど有りませんã€?
237 *
238 */
239 public void close() {
240 LogWriter.close();
241 }
242 }