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    }