[*] 現存のクライアント・コードと100%互換性のある変更。 [**] 現存のクライアント・コードにほとんど修正を必要としない変更。 [***] 現存のクライアント・コードに重要な修正を必要とする変更。 2001年 6月19日 - バージョン 1.1.3の発表 - log4j.dtdで、log4j:configuration要素のnamespace指定が抜けていた ので追加しました。log4j設定ファイルを解析するとき、宣言漏れは barfにnamespaceの新世代に認識のあるパーサーを引き起こしました。 [*] - log4j-core.jarサイズを78KBへ削減 [*] - ドキュメントのわずかな修正 [*] 2001年 6月7日 - バージョン 1.1.2の発表 - デフォルト設定ファイルを検索するのに間違ったクラスローダーを使用 したCategoryクラスのstatic初期化の問題を修正した。 関連した検索アルゴリズムは単純化された。 それにもかかわらず、自動構成ファイルを指定する好ましいメソッドは、 log4j.configurationシステム・プロパティをセットすることです。[*] - ドキュメントの改善。デフォルト初期化手順についての説明追加。[*] - org.apache.log4j.examples.appserver パッケージの強化 [*] - NTEventLogAppender での出力例外のバグ修正[*] 2001年 5月20日 - バージョン 1.1.1の発表 - PropertyConfiguratorでの独自優先度のサポートが抜けていたものを追加 [*] - SMTPAppenderで、沢山のフィールドを、デフォルトアクセスの変わりにprotected にした [*] 2001年 5月19日 - バージョン 1.1の発表 - このリリースは 1.1b7と同じコードです。ドキュメントだけが幾つか修正されてまいす。 2001年 5月 9日 - バージョン1.1b7の発表 - log4j 1.0.4であった、BasicConfigurator の static メソッドは、 無効になりました。バグ報告をしてくれた Francisco Marin に感謝します。[*] - バグ 1505の修正にとともに2つの関連したデッドロック問題を修正しました。 この問題を報告された joelr@viair.com に感謝します。[*] - Configurators の configureAndWatch メソッドが設定ファイルをクローズ しないので、編集できないようになっていました。バグ1686を参照のこと。[*] - DOMConfigurator.setParameterで特殊文字の変換は、変数の置換に先立って 実行されます。この変更は Steven Velez によって提案されました。 大多数のユーザは、この変更に気がつかないと思います。[*] 2001年 4月26日 - バージョン1.1b6の発表 - カーネギーメロンSCS の Aaron Greenhouseで、マルチスレッドに 関連する一連のバグが CategoryとAsyncAppenderに発見されました。 バグデータベースのバグID 1505〜1507にバグ報告がされています。 それらは回避させる価値があります。[*] - InvalidJarIndexException は、JDK1.3でのみ有効です。 log4j 1.1b5でこの例外タイプを参照していたため、以前のJDKとの互換性が 損なわれていました。現在は参照していません[*] - PriorityRangeFilterが、Simon Kitchingによって追加されました。 さらに便利な選択肢としてAppenderSkeletonの閾値オプションを参照 してください。[*] 2001年 4月22日 - バージョン1.1b5の発表 - HTMLLayoutで、HTMLドキュメントのタイトルオプションを title (...<title>)としました。 [*] - LocationInfoでの重大なパフォーマンスバグを修正しました。Hein Couwetと kr@it-practice.dk は、それぞれ独自にこのバグを確認しました。 これは、まだソース・コードを研究しているたくさんの眼球によって 生まれられる違いの別の例です。[ * ] - LocationInfo.getClassNameメソッドが IBM Visual Ageで実行するときに 正しくない値を返してしまうのを修正しました。適切なパッチを 提供してくれた Mathias Rupprecht に感謝します。[*] - 配布の中のbuild.shファイルが DOS CRLF形式になっていたバグを修正しました。 この問題の報告をされた ma.darche@free.fr に感謝します。[*] - log4jのデフォルト設定で検索するときにアプレットで投げられる InvalidJarIndexException を修正しました。 このバグ報告をされたMichael Lundahl に感謝します [*] - log4j-core.jarから抜けていたPropertySetterException クラスを追加しました。 このバグ報告をされた ma.darche@free.fr に感謝します。 [*] 2001年4月20日 - バージョン1.1b4の発表 - Mathias Bogaert は、バージョン1.1b3において自動log4j構成で使用される リソースのための検索アルゴリズムが1.0.xとは異なったことに気がつきま した。Beta4は、また、1.0.xと互換性を持つより強力な仕組みを使用します。[*] - Paul Glezenの正確な指摘により、log4jがクライアント/サーバー・モードで 配備され、複数のlog4jクライアントが、log4jサーバにログ記録をする場合に、 クライアント/サーバー通信において使用される内部のLoggingEventクラスが log4j 1.1で変更されたため、すべてのホストをバージョン1.1に更新しなけ ればならりません。[*] 2001年4月18日 - バージョン1.1b3の発表 - RollingFileAppenderBeanInfoクラスを加えました。これは、 long型の替わりにString型としてmaxFileSize JavaBeansプロパティを のふりをします。 これは、100%の後方互換が失われた1.1b2で削除された setMaxFileSize(long)メソッドを復活させるためです。 この追加は、100%の後方互換を取り戻します。[ * ] 2001年4月18日 - バージョン1.1b2の発表 - ディレクトリ構成は、よりよくJakarta取り決めに合うために次のように  変更しました: org/**−> src/Java/org/** xdocs/**--> src/xdocs/** あなたがlog4jの CVSをcheckoutしているのであれば、  必ず新たなコピーをチェックするようにしてください。[ * ] - 構築するときに必要なjarファイルを build/lib にいくつか追加しました。 これにより、log4jを展開してすぐに構築することができます。[ * ] - 優先度パラメータが構成ファイルにおいて予期されるときはいつでも、 今やカスタム優先度クラスを使用することができます。 詳細はOptionConverter.toPriorityメソッドを見てください。 log4j.dtdでの<priority>要素がこの変更点に影響されないままである ことに注意してください。[ * ] - setQuietMode(booelan)メソッドをLogLogに加えました。 静かなモードでは、LogLogはエラーの場合にさえ何も出力しません。[ * ] - Log4j構成要素は、今やJavaBeansとして構成されます。 大部分のlog4j構成要素によって実装されるOptionHandlerインタフェースにおいて、 setOptionとgetOptionStringしているメソッドはdeplecateされました。[ * ] - serializableであるスタック配列に、ロギングするステートメントにおいて 渡されるthrowableのスタック・トレースは、解析されません。 これは、正しくthrowableな情報を伝播するためにlog4jサーバーに カスケードすることを許します。[ * ] - XML構成ファイルでは、<configuration>要素は、deprecateされて、 <log4j:configuration>要素と取り替えられました。[ * ] 以下のperlコマンドは、移行の役に立ちます: perl -p -i.bak -e "s/configuration/log4j:configuration/;" file1.xml .. fileN.xml - 「log4j.configDebug」システム・プロパティは「log4j.debug」システム・ プロパティと取り替えられました。ですがまだ利用できます。 同じように、「configDebug」属性は、deprecateされて、 log4j.dtdで"debug"属性と取り替えられました。[ * ] 2001年2月23日 - バージョン1.1b1の発表 - ロギングは、今では階層毎に無効にすることができます。 設定ファイルで "disable" 指示を使用することで無効にできます。 「disableOverride」指示は、優先権を引き継ぎます「使用不能にします」指示的な。 この変更点の結果、使用不能にします、BasicConfiguratorでのメソッドのファミリーは、 deprecateされて、階層クラスでメソッドの同じファミリーと取り替えられました。[ * ] - FileAppenderは、3つの部分に分割されました: WriterAppender、ConsoleAppenderとFileAppenderです。 ConsoleAppenderは、FileAppenderの機能を記録しているコンソールを引き継ぎます。 その結果、ストリームのためにサポートしてください、そして、 印刷しているコンソールはFileAppenderでdeprecateされました。[ ** ] - FileAppenderは、今や正しくそのレイアウトのヘッダとフッターを出力します。 この問題は、リストにあまりに多くのユーザーによってここで報告されました。[ * ] - Appendersとレイアウトは、今や中でオブジェクトがその描かれた形式だけを LoggingEventしないという生のメッセージを見るようになります。 彼らがより少ないerror-prone方法においてアクセスされることができるように、 LoggingEventな若干のフィールドのアクセス修飾子は変わりました。 ジムCakalicとアンダーズKristensに彼らの貴重なアドバイスのための感謝します。[ * ] - getLayout()、getErrorHandler()とgetFilter()をAppenderインタフェースに 加えました。[ * ] - 適切であるので、OptionHandlerへの加えられたgetOption(key)メソッドは それの実装を結びつけて、修正しました。[ * ] - 非常に待たれたDailyRollingFileAppenderを加えました。[ * ] - 配布の構造は、いくぶん変わりました。log4j.jarファイルは、dist/の下で 見つけることができます。 javadocディレクトリは、docs/api/に移動されました。我々は、今や編集、 jarファイル作成、javadocsの生成を含む、そして、配布tarの作成のための リリースをつくることに関係している全てのステップを実行して、 ファイルをジッパーで開閉するために全くAntに依存しています。[ * ] - まず第一に、偽だったorg/apache/log4j/varia/ResilientFileAppender.java は削除されました。[ * ] - XMLLayoutは、今やとしての若干の出力と記録することになります <![CDATA ..[[> そうそれがそうするために、XMLパーサーによって解釈され ないでください。 他の長いリストのようなBogaertが修理するMathiasによって、これは提案 されました。[ * ] - 次の挿入点を更新しないCyclicBuffer.resizeメソッドにおいて、 バグを訂正しました。 バグを正確に報告してくれたOle Bulbukに感謝します。[ * ] - LoggingEventなクラスは、現在org.apache.log4j.Priorityクラスに由来する 優先度のserializationをサポートします。[ * ] - 「log4j.properties」ファイルをカテゴリー・クラスの静的initializerで 見つけるために検索メソッドを改善しました。 より良いメソッドを提供してくれたカルバン・チェンに感謝します。[ * ] - FCQN(前はinstanceFQN)パラメータを扱うコードがきれいにされました。 よく確立して単純な方法が、今やFCQN変数を定義するためにカテゴリー (またはラッパー・クラス)のサブクラスのためにあります: 静的変数を定義するだけです、サブクラスまたはラッパーの充分に修飾 されたクラス名からなる、FCQNがforcedLogメソッドに対する引数として この変数を供給することを言います、そして、サブクラスまたはラッパーが そのメソッドを呼び出す時。[ * ] - Category.javaでinstanceFCQNに静的なクラスでなくてインスタンス変数を作りました。 中で関係があって移動してください、カテゴリー・コンストラクタは今や instanceFCQNをセットしている追加の引数をとります。 これは、耐用期間をカテゴリー・サブクラスのためにより惨めにしません。[ * ] - エラーの場合にはdefaultValueを返さないという OptionConverter.instantiateByClassNameメソッドのバグを訂正しました。 このバグを確認されたMatthieu Verbertに感謝します。 - 特定のLayoutを使用したときにSMTPAppenderによって発生する電子メールの 中のなくしたスタック・トレースを訂正しました。[ * ] - コードに最新の変更点を反映させるために「変換文字をPatternLayoutに追加する」文書を 更新しました。また、追加された org/apache/log4j/examples/appserver ディレクトリ には、関連するサンプルコードが含まれています。[ * ] - BufferSizeオプションをAsyncAppenderに加えました。[ * ] - アプレットで投げられるSecurityExceptionsを除去しました このバグを報告してくれたTimur Zambalayevに感謝します。[ * ] - AsyncAppenderが閉じられたとき、誤って投げられたIOInterruptedExceptionを 修正しました。このバグを正確に報告したトム・パーマーに感謝します。[ * ] 2001年1月12日 - バージョン1.0.4(20番目のメジャーリリース)の発表 - カテゴリーのinstantiationの注文に従いNullPointerExceptionを引き起こす Hierarchy.javaで、重大なバグを訂正しました。 このバグを報告されたWolfram Gewohnに感謝します。[ * ] - EvaluatorClassオプションに言及し落としたSMTPAppenderのgetOptionsStrings メソッドにおいて、バグを訂正しました。 このバグを報告されたMark Balsterに感謝します。[ * ] 2001年1月11日 - バージョン1.0.3(20番目のメジャーリリース)の発表 - Category.shutdownを呼び出した後にAsyncAppednerでoccuringしている NullPointerExceptionを修理しました。 このバグを報告されたFrank-Olaf Lohmannに感謝します。[ * ] - タイプ階層の特別な引数をとるためにOptionConverter.selectAndConfigure メソッドを修正しました。このメソッドが、内部で使われて、大部分のユーザー に影響を及ぼしてはなりません。[ */** ] - log4によって内部的に使用されるLogLogにwarnメソッドの追加。[ * ] - ドキュメント・ディレクトリの下の多くのHTMLファイルの置き換え。 新しい構造は、jakartaサイトと互換性を持つことりより、 より一貫したナビゲーションができます。[ * ] - javadocsの2、3の改良をしました。[ * ] 2001年1月11日 - バージョン1.0.2(20番目のメジャーリリース)の発表 - 配布漏れのbuild.incファイルを配布に加えました。コードの変更はありません。 2001年1月10日 - バージョン1.0.1(20番目のメジャーリリース)の発表 - このバージョンは構築スクリプト・バグといくつかのドキュメンテーション を訂正しました。コードの変更はありません。 2001年1月8日 - バージョン1.0(20番目のメジャーリリース)の発表 - パッケージ階層は、現在org.apache.log4jから始まります。[ *** ] - カテゴリー・クラスにメソッドのfatal()ファミリーを加えました。 さらに、EMERG優先度は、Priorityクラスから削除されました。 この優先度は、広くより認められているFATAL優先度と置き換えられました。 この変化は、EMERGがFATALログ・ステートメントと取り替えられる  ことを必要とします。EMERGログ・ステートメントが珍しいと仮定して、 これは現存のクライアント・コードに対する小さいが、bearableな インパクトがあります。 さらに、Unix Syslog優先度 ALART, CRIT, NOTICEは、もはや認識されません。 これらの優先度に対するサポートは最少でした、そして、ほとんどのユーザーは これらの変化で苦しんではなりません。[ ** ] - メソッドsetRootPriorityを削除しました、これらのメソッドとしての getRootPriorityは、冗長で、以前に非難されました。[ ** ] - DOMConfiguratorでDOM Level 2の依存を削除しました これは、SunのパーサーまたはapacheのXercesを使って、可変なlog4j XML を作ります。[ * ] - カテゴリー・クラスの静的initializerは、現在その構成ファイルを捜す ためにlog4j.configurationシステムにプロパティを持っていきます。 構成ファイルを解析するために使われるconfiguratorのタイプは、 log4j.configurationシステム・プロパティの値に依存します。[ * ] - 独立した階層インスタンスのカスタム化をサポートするために PropertyConfiguratorとDOMConfiguratorを強化しました。 org.apache.log4j.net.SocketServerは、この機能を利用するために 強化されました。SocketServerの古いコードは、SimpleSocketServerに 移動されました。[ ** ] - 全てのオプション*values*(キー以外でない!)の可変の代用をサポート するためにPropertyConfiguratorを強化しました。[ * ] - カテゴリーは、今や彼らが結ばれる階層を知っています。これは、基礎を 将来のために予定されるいくつかのパフォーマンス強化のために用意します。[ * ] - オブジェクト翻訳に対するサポートの追加。与えられたオブジェクト・タイプ のためにオブジェクトrendererを登録することは、今や可能です。 与えられたオブジェクトが記録される必要があるとき、log4jはオブジェクトを ストリングに変えるために対応するrendererを呼び出します。 彼らがもはや必要でないので、この強化(全てのdebug(String)のようなメソッド を印刷する全てのストリング形式)の結果、info(String)は削除されました。 この変化は、後方互換を持たなければならないが、古いクライアント・コード の再コンパイルを必要とします。再コンパイルの必要条件に注意してくれた マイケル・スミスに感謝します。[ ** ] - ユーザーに対するサポートの追加は、PropertyConfiguratorでCategory factory を定義しました。このように、プロパティ・ファイル付きのlog4jを構成して、 まだcustemカテゴリーsub-classesを使うことは、今や可能です。 DOMConfiguratorは、すでにより洗練された粒をサポートしました。[ * ] - エラーまたは致命的なイベントの場合にはNがユーザーによって選ばれている そのバッファにおいて、イベントを記録している最新のNを含んでいる 電子メールを送るSMTPAppenderをAddeedしました。[ * ] - メソッドgetInstance(Class)をカテゴリー・クラスに加えました。[ * ] - configuratorsのconfigureAndWatchメソッドの中のバグを修正しました。 これは、log4jが不必要なディレイになっていました。[ * ] 2000年11月30日 - バージョン0.9.1(19番目の公開のリリース)の発表 - NTEventLogAppender.dllを間違ったカテゴリー・メッセージ・ファイルを 登録させているtypoを訂正しました。このバグを正確に報告された Peter Hayesに感謝します。[ * ] - DOMConfiguratorとPropertyConfiguratorは、今や自動的に修正された 構成ファイルを見つけることができて、それらを再読み込みします。[ * ] - バッファが記録する加えられたAsyncAppenderは、最近の一時に要請して、 それらに奉仕します。操作を記録することは長くてブロックしている 非CPU集約型の操作、一般的にI/Oまたはネットワーク・アクセスで散在する ならば、AsyncAppenderはものすごくログのパフォーマンスを 増加することができます。CPU集中的な応用のために、AsyncAppenderを 使うことは、actualyに10〜25パーセントまでパフォーマンスを 記録することの等級を下げます。[ * ] - log4j.dtdは、IDREFによって他のappendersに言及するためにappendersを 許すために修正されました。[ * ] - appendersに言及するとき、DOMConfiguratorはID/IDREF属性を利用するため に修正されました。この変化は、DOM Level-2 API対応するパーサーを必要 とします。DOM平らな2つのJava結束は、http://www.w3.org/TR/分の 1999WD-DOM-Level-2-分の19990923java-binding.html.で利用できます。 - configure(Stringファイル名を加えます)DOMConfigurator.にメソッド このメソッドは、JAXP互換性を持つパーサーの存在を必要とします。 この時間、唯一のDOM2とJAXPで互換性を持つパーサーは、apache xerces パーサーであるようです。 - 正確な優先度マッチで濾過されることを許している PriorityMatchFilterを加えました。 これは、ユーザーによる共通の要求でした。[ * ] - カテゴリーの構成は、今やアトミック操作です。 これは、構成が進行中であるが、ログ要求が消失しないことを確実にします。 Anders Kristensenは、最初に非アトミック構成で潜在的な問題を 観察しました。 [ * ] 2000年11月20日 - バージョン0.9.0(第18の公開のリリース)の発表 - 「log4j」要素は、log4j DTDで「構成」に名前を変えられました。 この変化は、XMLで書かれるそのlog4j構成ファイルが修正されることを必要 とします。log4j要素が一度だけXMLファイルに登場して以後、この変化に ほとんど時間がかかってはなりません。[ ** ] - ResourceBundlesは、今や具体的なカテゴリー・インスタンスと静的なより 長いクラス以外です。さらに、他のプロパティの様に、リソースバンドルは、 カテゴリー階層から相続されます。[ ** ] - jarはlog4j.jarを提出します、そして、log4j-full.jarは今や彼らの それぞれの明白なファイルにおいて情報をversioningすることを含みます。[ * ] - それを壊したNTEventLogAppenderで、inconsistecyを訂正しました。 - java.util.Properties.によって帰ったので、オプション値においてスペース を引きずって、構成ファイルがcorrectelyに解析されなかったバグを修理されます スペースを引きずることは、今やオプション値から削除されます。 このバグは、引いているスペースが構成ファイルの慎重な検査なしで見られる ことができないからを全く狼狽させていました。[ * ] - XMLLayoutを加えました。 XMLLayoutの出力は、log4jのシリーズから成ります:イベント要素。 それは、完全なXMLファイルを出力しません。 出力は、よく作り上げられたXMLファイルを作り上げるために外部の実在 として含まれるようにできています。[ * ] - 新しい抽象的なクラスorg.log4j.helpers.DateLayoutを加えました。 TTCCLayoutは、今やDateLayoutを拡張します。[ * ] - PatternLayout.でバッファ管理コードにおいてむしろ微妙な パフォーマンス・バグを訂正しました Vladislav DutovとConstantineのおかげで A. このバグの訂正を主張するためにのためのPlotnikov。[ * ] - org.log4j.spiと呼ばれている新しいパッケージを作成しました。 この新しいパッケージは、偶然のユーザーから隠されるが、 log4jを拡張する必要であるクラスを開きます。[ * ] - ハンドルへの加えられたorg.log4j.varia.ExternallyRolledFileAppenderは、 外にファイル・ロールオーバーの引き金となりました。[ * ] - 複数の階層木に対するサポートの追加。[ * ] - PatternLayoutは、今や新しい変換パターンをサポートするために subclassedされることができます。[ * ] - 正しくカテゴリーとプライオリティー・クラスのsub-classingすることを 取り扱うためにDOMConfiguratorとlog4j DTDを拡張しました。 また、マイナーな調整が、sub-classingしているハンドルに他のクラスにありました。 これらの変化は、ユーザーに見えなくなければなりません。 rootカテゴリー以外の全てのカテゴリーは、副属することがありえて、そのうえ、 プライオリティーに副属しているorg.log4j.Priorityを割り当てました。 rootカテゴリーが、常に存在して、subclassedされることができません。 ProppertyConfiguratorは、不変のままです。 このように、それはカテゴリー・クラスの延長を取り扱いません。 [ * ] - appendersのフィルタサポートの追加。 DOMConfiguratorとlog4j.dtdは、フィルタをサポートするために強化されました。 [ * ] - 取り扱うことはappenders.にサポートする加えられたエラー DOMConfiguratorとlog4j.dtdは、フィルタをサポートするために強化されました。 [ * ] - IBMの視覚の世代環境での位置情報の正しい解釈に対するサポートの追加。 関連するパッチを供給してくれた Wolf Siberskiに感謝します。 [ * ] - カテゴリーへの加えられたgetAdditivityメソッド。 この機能は、Constantin Mitranによって要請されました。 (ecircle.deでのmitran)[ * ] 2000年8月27日 - バージョン0.8.5b.の発表 - カテゴリー・クラスのデフォルトの初期化コードの中の訂正された複数のバグ。 修正パッチの確認しと提供してくれた Jeff Turner に感謝します。 [ * ] 2000年8月24日 - バージョン0.8.5a.の発表 - PatternLayoutにそう%n変換文字を行セパレーターがプラットホーム独立した 方法において指定されることができるというにに加えました。[ * ] - 0.8.5内部の優先度で、整数値は、Unix Syslog値から分離されました。 これは、SyslogAppedderを壊しました。 新しい機能Priority.toSyslogIntは、このバグを解決するために紹介されます。 [ * ] 内部の prtar tzvf iority整数バグを訂正しました。 2000年8月23日 - バージョン0.8.5.の発表 - 全てのlog4j内部の出力は、今や文字列「log4j: 」を前につけて出力されます。 他のソースによってlog4j内部のログをメッセージ出力と区別するためにより 簡単です。[ * ] - イベントを記録することを造るとき、カテゴリー・クラスの副クラスは今や 彼らの充分に修飾された名前を指定しなければなりません。 これは、正しくsub-classesにさえよる作品またはカテゴリーのラッパーに PatternLayoutで%C変換指示子を許します。[ * ] - メソッドdisableDebugをBasicConfigurator.に加えました このメソッドは、気にせずにデバッグ優先度の全てのプリント要求を使用 不能にしますそのカテゴリー。 類似したメソッドは、disableInfoに使用不能にします、disableAllと enableAllは、また、持ちます加えます。 メソッドがoverridenにそばにlog4j.disableOverride システム・プロパティに課していることができるタイプを使用不能にしてください。 BasicConfigurator.disableInfoを呼ぶことは、 今や非難されたflagAsShippedCodeメソッドに等しいです。[ * ] - 上記の変化を与えられて、システム・プロパティ log4j.shippedCodeFlagOverrideは、もはや尊敬されません。[ ** ] - それは、今やsub-classカテゴリーに可能です。 副クラスは、カテゴリー階層に付着し継続するかもしれません。 これは、しばしば要請された機能でした。[ * ] - appenders.なしでカテゴリーにおいて無視されているadditivityフラグに 関する問題を訂正しました このバグは、アンダーズKristensenによって発見されました。[ * ] - log4j環境をリセットするためにメソッド BasicConfigurator.resetConfigurationを加えました。 このメソッドが、倹約して使われなければなりません。[ * ] - カテゴリー・クラスの初期化で、ファイルlog4j.propertiesは、 今やクラスのロードに使われる検索パスから捜されます。 ファイルが見つけられることができるならば、それは PropertyConfigurator.configure(java.net.URL)メソッドに供給されます。[ * ] - BasicConfiguratorクラスの静的initializerの範囲内でシステム・プロパティ にアクセスすることができないこと以外は、デバッグ・メッセージとしてエラーと してもはや報告されません。 appletsに関するこの問題を報告されたGilles Schliengerに感謝します。 [ * ] - 無限のループに変換を使うことは一つの要素(幸いにも下の非常にまれに見 る状況)で模倣する時を引き起こしたバグを訂正しました。 このバグは、Igor Potraev(log4pの著者)によって、最初に報告されました。 それは、IBMグローバルサービスから Joe Haberlによって独立に報告されました。 [ * ] - NDCクラスで怠けて死んでいるスレッドの参照を削除するために仕組みを加 えました。本当に、前のバージョンにおいて、スレッドの範囲内の NDC.popを呼ぶが、出る(そのスレッド)前にNDC.removeに呼ぶのを忘れる ことは、結果としてメモリリークを起こしました。[ * ] - SocketAppender.の大きな記憶漏れ穴を訂正しました このリークは、ストリームに書かれる各々のためにリファレンスを無期限に 持っているObjectOutputStreamによりました。 非常に正確に、このバグを記述してくれたDan MacDonaldに感謝します。[ * ] - カテゴリーの中のログとl7dlogメソッド以外は、出荷するものはフラグを コード化することをもはや無視します。 このバグは、Mario Schomburgによって報告されました。[ * ] - LoggingEvent.writeObjectメソッドへの加えられたなくしたNDC情報。[ * ] - SocketNode.でのSocketExceptionの訂正された取り扱い これと前の問題を報告されたGerald Gutierez(ggutierez@emobiledata.com)に感謝します。 [ * ] - Javaドキュメンテーションを構築して、JakartaのAntに賛成して ファイルをきしませる段階的な外のカスタム・シェル・スクリプト。 Antがカスタム・シェル・スクリプトと同期してファイルを構築することは、 保つ迷惑になっていました。[ * ] 2000年5月11日 - バージョン0.8.4d.の発表 - NT EventViewerは、メッセージ4096を見のがすことについてもはや不平を言いません。 - ドキュメンテーションの中のマイナーな訂正。 - 配布への漏れたアイコンGIFの追加。 - 出るとき、SocketNodeは今やソケットを閉めようとします。 これに注意してくれた Moses Hohman(mmhohman@rainbow.uchicago.edu)に感謝します。 - javadocディレクトリからcom.ibm.log4jを削除しました。 これは、VAJを混乱させるようです。 この問題を報告してくれたSteve Ashcroftに感謝します。 2000年5月5日 - バージョン0.8.4c.の発表 - 問題(次のアイテムを見ます)がストレス-テストに800の新しいテスト ケースの上に加えた無限のループの結果、CategoryFactoryでのコードが カテゴリー作成が起こるところを分類すること。[ * ] - 特定のまれに見る状況の下で、Category.getInstanceメソッドは、無限の ループに入りました。この問題を確認して、パッチを提案してくれた IBMグローバルなサービス/HannoverからのマリオSchomburgに感謝します。[ * ] - DOMConfiguratorとlog4j.dtdは、指示的なプライオリティーのタイプ上に、 同時性の外にありました。その結果、プライオリティー指令は、デバッグに 全く欠場しました。 このバグを正確に報告された Peter(petervt@users.sourceforge.net)に感謝します。 [ * ] - FAQへのマイナーな追加[ * ] - NDCクラスが使われることができる方法が出力と異なるクライアントを区別 することを示しているNumberCruncher例を加えました。[ * ] - PatternLayoutクラスで%x変換指示子をTTCC_CONVERSION_PATTERNに加えました。 これは、Trivial.java例の一貫した期待される出力です。 このバグを報告してくれた Jerome(schrom@users.sourceforge.net)に感謝します。 [ * ] 2000年5月3日 - バージョン0.8.4b.の発表 - オプションを含んでいる行がスペースを引きずることを含むならば、 additivityオプションの値はProperytConfiguratorによって正しく解析され ないでしょう。[ * ] - バージョン0.8.4a.の発表 - ローカライズされたロギングメソッド(l7dlog)は、優先度ベースの評価 を省略して、誤って全ての要求を記録しました。[ * ] 2000年5月1日 - バージョン0.8.4.の発表 - 近いメソッドは、彼らが持つかもしれないどんなリソースでも割り当てた リリースに、appender実装を許しているAppenderインタフェースに加えられました。[ * ] - パッケージ名が「com.ibm.log4j.*」から「org.log4j.*」に変更されました。 この新しい名前は、プロジェクトのオープンソースを反映したものとなります。 そして、URL http://www.log4j.org.と一致しています。[ *** ] - 国際化サポートの追加。 カテゴリー・クラスで新しく紹介されたl7dlogメソッドを見てください。[ * ] - FileAppenderで、ファイル・オプションは、今や可変の代用を認めます。 値「%{java.home}/test.log」がそれからオプション遺書を提出して システム・プロパティが設定される「java.home」/home/xyzとオプションが 与えられるファイルならば、例えば解釈します「/home/xyz/test.log」。 この機能に貢献されたAvy Sharell(sharell@online.fr)に感謝します。[ * ] - SocketAppenderは、今や公式パッケージの一部です。 それは、リモートSocketNodeにイベントを記録することを送ることができます。 SocketNodeは、サーバー(ローカル)方針によって、イベントを記録します。 例えば、クライアントはローカル・ファイルへのイベントを記録することができて、 そのうえ、リモート・サーバー(SocketNode)に、それらを送ることができます。 TextPaneAppendersのどんな番号でもとさらにre-transmitにもう一つのサーバー、 その他へのイベントへのコンソールにとって、このサーバーは、ファイルの どんな番号まででもイベントを記録することができます。 このパラダイムは、ほとんどのロギングシステムに共通です。 例えばSyslogとNTイベントログなど。 この方法を実際にパラダイムを実行することを示してくれた Andrew Harrisonに感謝します。 [ * ] - Category.callAppendersメソッドは、今やそれ自体を一つに作る代わりに、 LoggingEventを受け入れます。 これは、リモート・クライアントで発生するイベントを適応させるために必要でした。[ * ] - リモート・ログ記録をサポートするためにわずかに変更されるLoggingEventなクラス。 カテゴリー・フィールド(カテゴリー)は、categoryNameフィールド(ストリング) と取り替えられました。[ * ] 2000年4月14日 バージョン0.8.3bの発表 - 要求されたappenderを決して削除しないCategory.removeAppender(String)で、 バグを訂正しました。 このバグを報告してくれた Moses Hohmanに感謝します。 バージョン0.8.3aの発表 - 出力ファイルが書くために開かれることができなかったという場合において、 uncaught例外を投げるバグRollingFileAppenderを訂正しました。 この問題を指摘してくれたVinay Aggarwalに感謝します。 2000年4月13日 - バージョン0.8.3.の発表 - BasicConfiguratorで定義されるlog4j.overrideキーは、 log4j.shippedCodeFlagOverrideに名前を変えられました。[ ** ] - カテゴリー・クラスの中のgetCurrentCategoriesメソッドは、正しい値を返しません。 この問題を報告されたTimothy Potter(tpotter@agency.com)に感謝します。[ * ] - Appendersは、今やオプションとして優先度の閾値を認めます。 優先度による全ての要求は、appenderによってappenderの閾値優先度 より低く無視されます。[ * ] - XML構成ファイルを解析している統合したクリストファー・テイラーのDOMConfigurator。 [ * ] - jarファイルlog4j-net.jarは、log4j-full.jarと取り替えられました。 それは、com.ibm.log4j.netパッケージに加えてDOMConfigurator.classを含みます。 [ ** ] - Antツールでの構築に対するサポートの追加。 build.xmlファイルを供給するためのクリストファー・テイラーに感謝します。 Antは、利用できる形式http://jakarta.apache.org.です。[ * ] - FileAppenderのファイル・オプションは、今や値「System.out」 または「System.err」を受け入れます。 一つにこれらの値、構成ファイルの中のsuppiledは、それから出力です 対応するストリームに向けられてす。 さらに、FileAppenderのデフォルトのコンストラクタは出力目標として System.outをもはやセットしませんし、それはデフォルトのレイアウトを定義しません。 [ * ] - PatternLayoutクラスに以下の変換指示子が追加されました。 呼び出しクラス(C)、呼び出しファイル名前(F)、呼び出し行番号(L) 呼び出しメソッド名(M)。 印刷されるカテゴリー名で、カテゴリー変換指示子は、今や正の番号を 制御するためにユーザーを許しているオプションの精度修飾子に大部分 の構成要素を持っていきます。 新鮮なファイル名と行番号情報がJIT編集のためにunavilableだった時を occuringしているバグを訂正しました。 その場合、PatternLayoutは正しく利用できる位置情報の残りを使いません。 [ * ] 上記の強化とbug-fixesは、Nelson Minar(nelson@monkey.org)によって、 コメントから始まります。 2000年3月23日 - バージョン0.8.2.の発表 - SimpleLayoutとTTCCLayoutは、そのサイズを少なくしておくためにlog4j.jar ファイルにおいてPatternLayoutと取り替えられます。 これらの2つのレイアウトは、まだパッケージの一部です。 - PatternLayoutクラスは、導入されます。 実行時で解析される変換パターンを使って可変なこの新しいレイアウトはあります。 これは、どんなコードでも書くことなく、そして、専用のレイアウト (例えばSimpleLayoutとTTCCLayout)と比較して周辺的なパフォーマンス・コスト だけで出力レイアウトを選ぶためにユーザーを許します。 PatternLayoutも、最小限で最大のフィールド長を決定するためにユーザーを許します。 PatternLayoutは、Jim Cakalic(jim_cakalic@na.biomerieux.com)によって書かれました。 [ * ] - 全ての内部の構成要素は、今や情報を記録しているspecifiyにLoggingEvent なインスタンスを使います。 - SyslogAppender.でなくした可変の初期化に関する問題を訂正しました 例外を記録するとき、これによってNullPinterExceptionが投げられるよう になりました。 デフォルトのコンストラクタをSyslogAppender.に加えました このコンストラクタの欠如によって、appenderタイプがセットされた java.lang.InstantiationExceptionを投げるためにPropertyConfiguratorが SyslogAppenderであるようになりました。 これらのバグを正確に確認するためのYves Bossel(ybossel@opengets.cl) に感謝します。 SyslogAppender.でコードを取り扱っている他の関連したいくらかの選択を修正しました [ * ] - デフォルトのアクセスでなくてされたNDC.get公開のアクセス。 この問題を報告してくれた Y. J. Chun(monac@softonnet.com)に感謝します。[ * ] - PropertyConfiguratorは、今やカテゴリーのためにadditivityオプションを解析します。[ * ] - 「log4j.additivity」である文書化された値にマッチするために一定の ADDITIVITY_PREFIXの値を訂正しました。[ ** ] - System.outがある本当に悪いバグがPropertyConfigurator.configureが 呼ばれた時を閉じることを訂正しました。 このバグを追って、報告するためのChristopher Taylor (cstaylor@pacbell.net)に感謝します。[ * ] - フラグ「log4j.configDebug」が構成ファイルにおいて定義されるならば、 PropertyConfiguatorは今やデバッグ・メッセージを印刷します。 以前に、「log4j.configDebug」が課されたシステム・プロパティがメッセージを デバッグする場合だけ、印刷されてください。 Shawn Kircher(skircher@vninet.com)による質問は、この変化を誘発しました。[ * ] - AbsoluteTimeDateFormat、DateTimeDateFormatとISO8601DateFormatで秒の間で セパレーター、そして、ミリ秒、ISO8601の好ましいサインで応じるために、 終止符からのコンマに変更します。 標準でこの矛盾を指摘されたJim Cakalic(jim_cakalic@na.biomerieux.com)に感謝します。[ * ] - RollingFileAppenderがWindowsシステムで正しく機能しないバグを訂正しました。 この問題に注意してくれたHeinz Richter(heinz.richter@ecmwf.int)に感謝します。 2000年2月19日 - バージョン0.8.1.の発表 - coreクラスは、今やオプション・ファイルのフォーマットから独立しています。 可変な中心的なクラスは、OptionHandlerインタフェースを実装します。 OptionHandlersは、関連するオプション名を学ぶためにconfiguratorsを許します。 それ自体を構成するOptionHandlerに、configuratorはオプション値を供給します。 これらの変化の結果、Initクラスは、2つの別々のクラスに分析されました: BasicConfiguratorとPropertiesConfigurator.[ ** ] 0.8.0のためのXML configuratorは、Christopher Taylor (cstaylor@pacbell.net)によって、すでに書かれました。 - カテゴリーにつき加えられた複数のappenderサポート。 appendersはカテゴリー階層に続きます、すなわち、子供カテゴリーはその 両親のappendersを受け継ぎます。 - assert()メソッドをカテゴリー・クラスに加えました。 Steven Marcus(srnm@awaretechnologies.com)は、 この追加を要請しました。[ * ] - 自動スタック印刷は、もはやサポートされません。 これは、不必要にコードを複雑にした使っていなくて頼みにならない 機能でした。[ * ] - log4jは、今やメッセージに書くappenderがあることはありえなかった 時が見つけたと警告しているシングルを発します。 ユーザーがlog4j環境を構成するのを忘れるとき、これは一般的な場合です。 この変化は、Jim Cakalic(jim_cakalic@na.biomerieux.com)に よって提案されました。[ * ] - RollingFileAppenderは可能性の上にファイル・ロールを加えます− Heinz Richter (heinz.richter@ecmwf.int)によって実装されました。 [ * ] - com.ibm.log4j.helpers.SyslogTracerPrintWriterがlog4j.jarで含まれな かったからjava.lang.NoClassDefFoundErrorがを投げられるバグを訂正し ました。 このバグを指摘されたJim Cakalic(jim_cakalic@na.biomerieux.com)に感謝します。 [ * ] 2000年2月9日 - バージョン0.8.0.の発表 - 重要なAPI変化が、ありました。 Log、NOPLog、ILogクラスは、削除されました。 それらの機能は、カテゴリー・クラスに移動しました。[ *** ] このリリースでは、このように書くかわりに ILog.debug(CAT, "Some message."); このように書きます。 CAT.debug("Some message."); Arndt Schoenewald <arndt@ibm23093i821.mc.schoenewald.de>は、 人が記録するために直接カテゴリー・オブジェクトを使用することが できることに気がつきました。 - 直接カテゴリー・オブジェクトをインスタンス化することは、もはや可能では ありません。 その代わりに、人はメソッドCategory.getInstance(String name) factoryを使います。[ *** ] そこで、カテゴリーインスタンス化のコードは、CateogryFactoryクラスに 移動されました。 このクラスは、パッケージ可視性を持って、ユーザーから隠されるままです。 この文体の改良は、Luke Blanshard(luke@quiq.com)によって提案されました。 - Initクラスは、log4j環境を初期化するためにメソッドを提供します。 Init.flagAsShippedCodeメソッドは、NOPLogクラスを取り替えます。 - APIを表すためにドキュメンテーションにおいて変化を変更します。 - NDC.cloneStack、そして、メソッドが今やnull-stacksを大目に見ることを 遺伝してください。[ * ] 2000年1月29日 - バージョン0.7.5.の発表 - TTCCLayoutは、現在パラメータとしてjava.text.DateFormatオブジェクトを とります。 日付をフォーマットする作業は、このオブジェクトに委任されます。 java.text.DateFormatクラスを拡張している加えられた4つのクラス。 これらは、RelativeTimeDateFormat、AbsoluteTimeDateFormat、 DateTimeDateFormatとISO8601DateFormatクラスです。 ISO8601日付フォーマットを提案するための Arndt Schoenewald <arndt@ibm23093i821.mc.schoenewald.de>に感謝します。 これらの4つのクラスは、特定のTimeZoneでパラメータ化することができます。 TTCCLayoutクラスは、今や「TimeZone」と呼ばれている新しい構成 ファイル・オプションを受け入れます。 java.text.SimpleDateFormat、しかし、彼らがまた、非常により速いより、 これらの4つのDateFormatsは、順応性のありません。 これらの変化(setRelativeTime)の結果として、TTCCLayoutでメソッドを setDatePrintingすることは関連された構成ファイル・オプション RelativeTimeとともに削除されました。そして、DatePrintingして 、TimePrintingしました。 [ ** ] 現在のコードは、Heinz Richter(heinz.richter@ecmwf.int)に よって寄稿されるコードによって示唆されます。 - Log.emergメソッドは、非難されました。 あなたがEMERG優先度のステートメントを使うならば、 その代わりにLog.log形式を使ってください。[ ** ] - NDCクラスへの加えられたgetDepthでsetMaxdepthなメソッド。  これは、特にcalleesがpushするが、popするのを忘れるとき、  ネストされていたコンテキスト深さを管理することをより簡単にします。 - com/ibm/log4j/overview.htmlにcom/ibm/log4j/package.htmlで ドキュメンテーションを移動しました。 多くのユーザーは、テキストの残念なレイアウトのために com/ibm/log4j/package.html記述を読むことができていませんでした。 たぶんより多くの人々は、その現在の位置でパッケージ概要を読みます。 - TCPソケットを使っているリモート・ログ記録をするために com.ibm.log4j.netパッケージを加えました。 これは、さらに実験的なコードです。 - 新しく debug, ... emerg メソッドを追加したので、カテゴリーの パラメータは必要なくなりました。 彼らは、「root」を印刷がステートメントの優先度を デフォルトの優先度と比較することによってなされるかどうかへの、 決定であるカテゴリーとみなします。[ * ] 2000年1月21日 - バージョン0.7.4.の発表 - Appenderと構成ファイルをパラメータとして受け入れている新しい ILog.initメソッドを加えました。 - FileAppenderのsetWriterとsetFileメソッドどこで‖新しい追跡者を インスタンス以外こと。 これによって、スタック・トレースが消失するようになりました! SyslogAppenderは、類似した問題を持ちました。[ * ] - レイアウトを呼ぶことはレイアウトに特定のオプションを課すreadConfig メソッドでないFileAppenderとSyslogAppender。 このバグを報告した Heinz Richter (heinz.richter@ecmwf.int)に感謝します。 [ * ] - appenderが常にPriority.DEBUGで呼ばれたLog.log()メソッドにおいて、 バグを訂正しました。 このバグを報告された Oliver Boehm(Oliver.Boehm@abaxx.de)に感謝します。 [ * ] 2000年1月14日 - バージョン0.7.3.の発表 - Syslogの互換性が追加されました。 これにより、現在ログ出力先をリモートsyslogまたはファイルのどちらかを (実行時に)選択することができます。[ * ] ぞっとするほどではないけれども、Syslogログ出力はのパフォーマンスは ファイルよりかなり遅いです。 - 優先度クラスは、以前になくした優先度 NOTICE, ALERT, CRITで豊かにされ ました。内部の定数は、また、syslog対応する物で整列しました。[ * ] - 新しい優先度をサポートするためにLog.logメソッドを加えました。[ * ] - TracerPrintWriterは、今や追跡者の中のネストされていたtop-levelクラス である代わりに、独立したクラスです。[ * ] - たくさんのWriter、すなわちSyslogWriter、SyslogQuietWriter、 SyslogTracerPrintWriterは、ヘルパー・パッケージに加えられました。[ * ] - Log.forceメソッドは、削除されました。 いろいろなAppender.doAppend実装は、その機能を引き継ぎます。[ * ] - FileAppenderとSyslogAppenderは、今やQuietWriterを使います。 QuietWriterは、例外を隠して、System.errにその代わりに一回の警告 メッセージを発するFilterWriterです。[ * ] - レイアウトは、今やappenderタイプへの初期化パラメータです。 以前にレイアウト、そして、appender独立したパラメータがそうする、 ログ・コンストラクタ。[ ** ] - ドキュメンテーションの中の多くの小さい改良と訂正。 Syslog関連したドキュメンテーションは、まばらなままです。 - ILog.init()とILog.init(String configFile)ILog.init(を呼ぶために変更 します)最初のパラメータとしての「com.ibm.log4j.Log.class」で。 これは、人々がlog4jに精通しているようになることをより簡単にします。[ ** ] - makeディレクトリへの加えられたなくしたファイル。 これらのファイルは、それらがlog4jを使うことは環境を作ることを願う ことに役立ちます。 この省略を報告した「リー・ホール」<LHall@JavaFoundry.com>に感謝します。 [ * ] 最近まで製環境は実行されるシングルでRMIスタブをコンパイルすることがで きませんでした。 この口やかましい問題は、Thomas Eirich(IBMチューリッヒ調査研究所) から、ヘルプのおかげで訂正されました。 2000年1月4日 - バージョン0.7.2.の発表 - 一部のユーザーは、正しくverbosity TTCCLayoutの日付出力について不平を 言っていました。完全日付出力は今や「dd MMM YYYY HH:mm:ss.SSS」 に短くなります例えば「06 Nove 1994 08:49:37.459」、その他に、ユーザー は現在、「08:49:37.459」の場合のように、時間情報だけを印刷するほうを 選ぶかもしれません。[ * ] - パッケージは、現在その出力目標としてOutputStreamでなくてWriterを使い ます。これは、わずかなパフォーマンス低下を犠牲にしてわかるためにより 小さくてより簡単なlog4jコードを作ります。 この変更の結果、FileAppenderクラスの中の2、3のメソッド名が、変更され ました。[ ** ] - SyslogAppednerとSyslogLayoutの事前の実験は、syslog互換性が離れて遠く ないことを示します。 難しいものは、根本的になることのない互換性が現在のlog4jアーキテクチャに 変更する加わっているsyslogです。 - 常にシステム・プロパティ「log4j.logType」がNOPLog.に課されたログ singleton平らなもしもをつくったNOPLog.createInstanceメソッドにおいて、 バグを訂正しました このバグと関連されたテストケースを報告を行った Robert Gottofrey(Robert.Gottofrey@wdr.com)に感謝します。 - Log.readConfig()で矛盾している「レイアウト」構成オプションを削除しました。 この変化は、大部分のユーザーに透明でなければなりません。[ */** ] 1999年12月20日 - バージョン0.7.1.の発表 - LogCreationManagerクラスは、削除されました。 その機能は、ログとNOPLogクラスで、createInstanceとgetInstance メソッドにtransferedされました。 曲げやすいものだけとしてインスタンスをつくることの新しい方法は 起こしやすい両方のより単純でより少ないエラーです。[ ** ] これらの変化の結果、ILogクラスの中のメソッドのinitファミリーは、 ログsingletonをつくることの新しい方法に合いました。 - Appenderインタフェースが、紹介されました。 出力ストリームにログ・ステートメントを書くメソッドは、 今や異なるAppenderを使うことによって変更することができます。 新しいFileAppenderは、以前にログ・クラスの一部であった同じ機能を提供 します。[ ** ] - TTCCLayoutで使用される時刻フォーマットを "Day, dd MMM YYYY HH:mm:ss.SSS GMTに 変更しました。例えば "Sun, 06 Nov 1994 22:49:37.459 GMT"になります。 このフォーマットは、RFC 1223, RFC 2616で推薦されるものとほとんど同じ ものです。唯一の違いは、ミリ秒情報が追加されています。[ * ] - レイアウト特定のオプションは、なくした指示のために構成ファイルから読 まれませんでした。信じない保守担当に対してこの省略を根気よく指摘した Vikram Sridharan(Vikram.Sridharan@alysis.com)に感謝します。[ * ] 1999年12月16日 - バージョン0.7.0.の発表 - バージョン0.7.0と上記は、IBM Public License(IPL)の下で配布されます。 IPLは、承認された開いたソース許可です(見る リストのためにhttp://www.opensource.org/licenses/)。 それは、特に、前のALPHAWORKS許可合意への類似した正に再配布する正を与えて、 パッケージを修正します。 - ログ・クラスは、今やレイアウト・オブジェクトでパラメータ化することが できます。レイアウトは、そうであることのフォーマットが印刷したと決定 します、そこでログ・クラスがいつ、どこに印刷するべきかについて決めます。 [ ** ] このmodularization、CGULogとNOPCGULogクラスの結果、いいえがより長く存在します。 CGULogクラスは、TTCCLayout(時間スレッド・コンテキスト・カテゴリー)と 取り替えられました。 これは、新しいログ出力フォーマットを構築することをより簡単にしなけれ ばなりません。 いつか近い将来、ログ・クラスは、書きのために出力されたストリームに異 なる戦略を許すためにさらに分析されます。 - com.ibm.log4j.にへの名前を変えられたcom.ibm.util.log階層 私は、しばらくの間これをしたかったです。 私は、リリース0.7.0がそうする最後の機会であったと感じます。 残念ですこの変化に起因するトラブル。[ **/*** ] - 新しいNDCクラス。 マーティンほかによって編集される本「プログラム・デザイン3のパターン言語」 の記事「診断上のメッセージを記録することの原型」部分で、 ニール・ハリソンによって提案されるので、このクラスはネストされていた 診断上のコンテキストを実行します。ネストされていた診断上のコンテキスト 今や見つからなかった粋な機能にす。[ * ] StressNDCテスト・クラスは、AIXの上でJDK 1.2.2ベータを壊すようです。 SunのJDK 1.2.2を使っているLinuxとNTの上で作品OKにようです。 いずれにせよ、StressNDCと関連されたperlスクリプトでされるテストは NDCクラスがbug-freeであることを明らかにするようです。 - CGULogクラスでバグをフォーマットしている日付を訂正します、 間違った月は、どこで若干の環境に印刷されました。 このバグを合図するためのクリストファー・ウィリアムズ (Christopher_Williams@mail.northgrum.com)に感謝します。 「Feb」、「Jan」、番号から3つの文字省略形までまた、 月フォーマットを変更される‖…(「12月」)。 新しいフォーマットは、ローカル日付フォーマットに関係なく明確です。[ * ] 1999年12月8日 - バージョン0.6.2.の発表 - 改良のためのさらに多くの場所によるより明白なドキュメンテーション。 - 常にシステム特定のセパレーターでなくてUnix行セパレーターを使った 追跡者クラスで、バグを訂正しました。 このバグを報告された Vikram Sridharan(Vikram.Sridharan@alysis.com) に感謝します。[ * ] - CGULog.readConfigメソッドでコメントを通過して飲み込んでしまうのを 訂正しました。[ * ] - 準備から環境を記録している基本を取り除くためにILogクラスにメソッドの initファミリーを加えました。 この強化のためのMark Donszelmann(Mark.Donszelmann@cern.ch)に感謝し ます。[ * ] - バージョン0.6.1をリリースした後の時間だけは、追跡者クラスが正しく 例外のタイプ以外の例外スタック・トレースを印刷しないバグを見つけて、 訂正しました。 バージョン番号を変更することなくwww.zurich.ibm.comの上で配布を取り替 えました。私は、誰も0.6.1の中間の(そして、バギーな)バージョンを 使っていないことを望みます。[ * ] 1999年11月16日 - log4j版0.6.1.の発表 - 改良のためのさらに多くの場所によるより良いドキュメンテーション。 - consistence目的のために、カテゴリーへの加えられたsetDefaultPriorityと getDefaultPriorityメソッドは、Log.classで分類して、 setDefaultPriorityを非難しました。[ ** ] - インスタンスが正しく初期化されない瞬間、もしも2つのカテゴリーが 同音異義語であった大きなバグを訂正しました。 - およそ4000マイクロ秒からおよそ1000まで例外ログ記録の速度を増加しました。 一部の人々のために記録している例外が重大なパフォーマンスであるようです。 改善された実装は、Nocolaiの(XNH@crisplant.com)実装の変化です。[ * ] 1999年11月9日 - 不完全なドキュメンテーションによるlog4j 0.6.0の発表。 - 新しいカテゴリー・クラスをデバッグするためにストレス・テスト・ プログラムを加えました。 テスト・プログラムが正を得るためにカテゴリー・クラスと同じくらい 難しかったことがわかります。 新しいクラスが今や自由なバグである非常に親友は、ストレス・テスト iの良好な結果を与えられます。 この仮定は、間違っているということを証明されました。 上記参照。 - 普通のStringでなくてカテゴリーをうまく処理するカテゴリーと 呼ばれている新しいクラスを作成しました。 新しいクラスは、使いやすいので、あるだけです。 しかし、記録するべきであるか、記録しないかどうかの、 評価が少なくとも10倍速いです。 NOPは、変化に影響されないパフォーマンス残りを分類します。 (あなたは、無駄な機能呼び出しの業績を、更新することができません。) 彼の貴重なコメントをしてくれた Alex Blewitt「Alex.Blewitt@ioshq.com」に感謝します。 彼は、ハッシュ・テーブルの中の見つけているひもが高価な操作であったことに気がつく第一でした。 この変化は、あなたの部分の上で若干のrecodingを必要とします。 詳細はFAQを見てください。 [ *** ] - StringBufferでなくてbyte[]バッファを使うためにログとCGULogメソッドに おいて力を修正しました。 古いコードはより明白でした、しかし、新しいものは少なくとも25%より速いです。[ * ] - 後退テストが追加されました。 - 我々は、今やsetLogFileを使って開けられるOutputStreamがログ・クラスの 責任であるのに対して、setOutputStreamによってセットされるOutputStream がユーザー管理されたリソースである方針を実施します。 もしもがsetLogFileを通して開きさえすれば、setLogFileメソッドは今や どんな前のOutputStreamでも閉じます。 前のOutputStreamがユーザーによって開けられて、setOutputStreamを通して セットされるならば、前のOutputStreamは触れないです。 同じように、それがsetLogFileを使って開けられる場合に限り、 setOutputStreamはどんな前のOutputStreamでも閉じます。 - チェックもしもにプログラマーをそこで許しているログ・クラスへの新しい メソッドlogOutputStreamExistsがすでに新しいものをセットしようとする ことの前の開けられたストリームであると付け加えました。 ストリームは、構成ファイルを読むbyproductとして開けられることができます。 - OutputStreamに書く失敗の場合には(プライベート)Log.Appendメソッドの 挙動を変更しました。 以前に、失敗の場合には、我々はSystem.errに戻りました。 今や、我々は警告メッセージを発して、全ての将来のログ・メッセージを捨てます。 新しい挙動は、我々の現在の頼みにならない記録している意味論と一致しています。 ターミナルがメッセージを記録することであふれるので、変化はその他の点では 機能的プログラムが失敗するのを妨げます。 - 計画を挙げている我々のクラスと一致したままであるためにILogにiLogの名前を 変えました。 最初の意図は、ILogを加えることになっていて、iLogを推奨されないようになっていました。 しかし、私はFAT16パーティション上でCVSを実行しています。そして、ファイルが万一に 備えて異なるだけのとき、重大な問題を引き起こします。 - LogFileNameが記憶されていなかったバグを訂正しました。 このバグを指摘されたJensに感謝します。 1999年10月28日 - log4j v0.5aの発表 - 今や、プログラマーはそれに常に追加する代わりに、ログ・ファイルの頭を 切って短くするほうを選ぶことができます。 この機能は、最初に要請されて、「Jens Uwe Pipka」jens.pipka@gmx.deに よってintiallyに実行されました。[ * ] - setLogFileは、今やアペンド機能に後でそれをオープンする代わりに、 要請されたファイルを開きます。 アペンド機能において関連した若干のコードをきれいにしました。 誰もそれを要請しなかったけれども、ログ・ファイルを閉じるメソッドがまだはありません。 それが聞こえるより、これは確実に道具に難しいです。[ * ] - それが以前にセットされたOutputStreamをもはや返さないことを setLogOutputStreamに単純化しました。[ * ] 1999年10月27日 - log4j v0.5のリリース - ジョー・ウォーカー(joe@eireneh.com)は、LogCreationManager.getSingleton 仕組みが厄介なことに気がつきました。 getSingletonを呼ぶ必要を隠す新しいクラスiLog(間接的なログ)が、今やあります。 私の233Mhz Thinkpadのパフォーマンス・テストは、この間接的行動が40ナノ秒 の順序で非記録された呼び出しに対する小さいパフォーマンス・インパクトを 持つことを示します。 記録された呼び出しに対するインパクトは、取るに足りないです。[ * ] - jarファイルを配布に加えました。jarファイルは、あなたがログを使うために 必要とするだろう、しかし、他のクラスがテストも例のためにも必要と しなかったファイルだけを含みます。 - CGUNOPLogがMakefileに統合されなかったバグを訂正しました。 - デバッグ/情報ステートメントがメッセージ・パラメータ構築のコストを負う ことなく記録されるかどうかに関係なく、加えられた新しいpublicメソッドは isDebugEnabledして、チェックにプログラマーを許すためにisInfoEnabledしました。 この追加は、Luke Blanshard Luke@quiq.comによって提案されました。 [ * ] - メソッドにプライベートを名前を変えますisEnabledに評価する また、それにされる明白な速度利益なしでファイナル。 その他に、public Log.forceメソッドとされます。[ * ] - 新しい統語論のsugar debug, ..., emerg, メソッドをlogオブジェクトに追加 [ * ] - Throwablesを扱うインタフェースを修正します、そして、例外だけでなく。 Luke Blanshardへのこの「バグ」を指摘されたことに感謝します。[ * ] - LogPerformanceクラスへの加えられたより多くのテスト。 特に、間接的なデバッグの影響をテストすることは、呼びます。 - コードを修正したい人々のために、「make」ミニ・チュートリアルを加えました。 - ソース・コードに修正を許している標準のalphaWorks許可に更新される許可。 しかし、この許可は、明確に、その修正がalphaWorksへ伝えられることを必要とします。 1999年10月15日 - alphaWorksで入手できる最初のもの パッケージの系統はFAQを参照してください。 [訳注: これは熊坂祐二が翻訳しました。 日本語訳に対するコメントは、jajakarta-report@nekoyanagi.com 宛に送って下さい。]