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.io.BufferedWriter; 019 import java.io.File; 020 import java.io.FileWriter; 021 import java.io.IOException; 022 import java.io.PrintWriter; 023 // import java.text.DateFormat; 024 // import java.text.SimpleDateFormat; 025 // import java.util.Date; 026 // import java.util.Locale; 027 028 /** 029 * Logを書ãè¾¼ã‚?‚ºã® PrintWriter を管ç?™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã™ã? 030 * 031 * 実際㮠Log ã®æ›¸ãè¾¼ã¿ã«ã¯??LogSender を利用ã—ã¦ä¸‹ã•ã?? 032 * 033 * @og.group エラー処ç? 034 * 035 * @version 4.0 036 * @author Kazuhiko Hasegawa 037 * @since JDK5.0, 038 */ 039 public final class LogWriter { 040 private static PrintWriter writer = null; 041 042 private static String logFileUrl = null; // 4.1.0.1 (2008/01/23) 043 044 /** 045 * ãƒ?ƒ•ォルトコンストラクター 046 * private ã«ã—ã¦?Œã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ¼ã®ä½œæ?ã‚’ã•ã›ãªã?§˜ã«ã—ã¦ã?¾ã™ã? 047 * 048 */ 049 private LogWriter() { 050 } 051 052 /** 053 * Logファイルã®å‡ºåŠ›å?ã‚’è¨å®šã—ã¾ã™ã? 054 * 055 * @og.rev 4.1.0.1 (2008/01/23) æ–°è¦ä½œæ? 056 * 057 * @param url 出力å? 058 */ 059 public static synchronized void init( final String url ) { 060 logFileUrl = url; 061 } 062 063 /** 064 * Logを書ãå?ã—ã¾ã™ã? 065 * 066 * @og.rev 4.1.0.1 (2008/01/23) 出力時間を出力ã™ã‚‹ã? 067 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用ã™ã‚‹ã‚ˆã†ã«ä¿®æ£ã—ã¾ã™ã? 068 * 069 * @param message メãƒ?‚»ãƒ¼ã‚¸ 070 */ 071 public static synchronized void log( final String message ) { 072 if( writer == null ) { 073 writer = getPrintWriter(); 074 } 075 // writer.println( message ); 076 // DateFormat formatter = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss.SSS",Locale.JAPAN ); 077 // writer.println( "[WriteTime= " + formatter.format( new Date() ) + "] " + message ); // 4.1.0.1 (2008/01/23) 078 writer.println( "[WriteTime= " + HybsDateUtil.getDate( "yyyy/MM/dd HH:mm:ss.SSS" ) + "] " + message ); // 5.5.7.2 (2012/10/09) HybsDateUtil を利用 079 writer.flush(); 080 } 081 082 /** 083 * 例外ã?スタãƒ?‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’LogWriterã®PrintWriterã«æ›¸ãå?ã—ã¾ã™ã? 084 * 085 * @og.rev 4.1.0.1 (2008/01/23) æ–°è¦ä½œæ? 086 * @og.rev 4.3.4.5 (2009/01/08) nullãƒã‚§ãƒ?‚¯è¿½åŠ? 087 * 088 * @param th スタãƒ?‚¯ãƒˆãƒ¬ãƒ¼ã‚¹ã®å–å¾—å?Throwableオブジェクãƒ? 089 */ 090 public static synchronized void log( final Throwable th ) { 091 if( writer == null ) { 092 writer = getPrintWriter(); 093 } 094 th.printStackTrace( writer ); 095 } 096 097 /** 098 * PrintWriter ã‚?close() ã—ã¾ã™ã? 099 * 100 */ 101 public static synchronized void close() { 102 if( writer != null ) { writer.close(); } 103 writer = null; 104 } 105 106 /** 107 * 追åŠ?ƒ¢ãƒ¼ãƒ‰ã§ä½œæ?ã—ãŸ?ŒPrintWriter ã‚’å–å¾—ã—ã¾ã™ã? 108 * PrintWriter ã¯?Œã‚·ãƒ³ã‚°ãƒ«ãƒˆã?ンã¨ã—ã¦?Œå”¯ä¸?˜åœ¨ã•ã›ã¦ã?¾ã™ã? 109 * 110 * @og.rev 4.1.0.1 (2008/01/23) ãƒã‚°ãƒ•ァイル出力å?を外部ã‹ã‚‰æŒ?®šã™ã‚‹ã? 111 * 112 * @return 追åŠ?ƒ¢ãƒ¼ãƒ‰ã§ä½œæ?ã—ãŸPrintWriter 113 */ 114 private static synchronized PrintWriter getPrintWriter() { 115 // String logFileName = HybsSystem.url2dir( HybsSystem.sys( "SYS_LOG_URL" ) ); 116 117 if( logFileUrl == null || logFileUrl.length() == 0 ) { 118 return new PrintWriter( System.err ); 119 } 120 else { 121 // 日付フォーãƒ??ファイルåを変æ›ã—ã¾ã™ã? 122 DateSet dateSet = new DateSet(); 123 logFileUrl = dateSet.changeString(logFileUrl ); 124 125 try { 126 File logFile = new File( logFileUrl ); 127 return new PrintWriter( new BufferedWriter( new FileWriter( logFile, true ) ) ); 128 } 129 catch( IOException ex ) { 130 String errMsg = "ãƒã‚°ãƒ©ã‚¤ã‚¿ãƒ¼ãŒä½œæ?ã§ãã¾ã›ã‚“ã€?" + logFileUrl + "]"; 131 // throw new HybsSystemException( errMsg, e ); // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´ 132 throw new RuntimeException( errMsg, ex ); 133 } 134 } 135 } 136 }