2016-08-01 11 views
0

私は機能的なロギング(開発者以外に見られるログ)に関する問題に取り組んでいます。 1つの要件は、ログエントリごとに一意のIDを追加することです。これは、製品管理者が前記IDを照会して、関連するすべてのログ項目を取得できるようなものです。 A(擬似)コードの例を以下に示します。機能的なロギングのための定数UUID(デザイン)

if (something starts or happens here){ 
    //arguments: container id, service name, message, message uuid 
    functionalLogService.addLog(container.getId(), this.SERVICE_NAME, "this happened", "124e3314-ffad-4b5d-be76-fc6b0f82aeea"); 
} 

私はかなり頻繁にこれをしなければならないと私は本当にloglinesにハードランダムUUIDを持っ好きではありません。 UUIDは、各ログステートメントごとに異なります。 1つのオプションは、それをそのまま残すことです。もう1つは、それぞれのUUIDの定数を作成することです。

私の質問:これを行うには、デザインや「いい」方法はありますか?

UUID.nameUUIDFromBytes(message.getBytes()).toString(); 

しかし、いくつかの点で私はメッセージを変更したい場合は、データベースはもはや後方互換性がありません:私はすでに使用してのアイデアを持っていた

EDIT

だからこのオプションは外です。

答えて

1

あなたはユニークなcontainer.getId()があり、このIDがわかっている場合は、CONCATENATE container.getId()this.SERVICE_NAMEでUUIDを作成し、生成されたUUIDから文字を補完することができます。あなたのすべてのenteriesは、container.getId()this.SERVICE_NAMEで始まる一意のIDを持つでしょう。

ログには、container.getId()this.SERVICE_NAMEで始まる特定のログエントリがあります。

それとも

意味をなさない名前のpublic static final定数、(LogEntryConstants.java)を使用してクラスを作成し、ログエントリでは、この定数を使用。また、許容できる場合は、これらの定数の値に、おそらくthis.SERVICE_NAMEを含む読み込み可能なテキストを追加します。このテキストでは、キーワード(this.SERVICE_NAME)による検索をログに簡素化できます。それは過剰ですが、コードを整理してビジネスロジックのハードコードを取り除き、ユーティリティクラスLogEntryConstantsに移動します。

+0

これも私の最初のアイデアでしたが、containerIdが変更され、特定のログエントリのUUIDが一定に保たれるため、これを使用することはできません。 –

関連する問題