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    }