タイミングを計測するメソッドが呼び出されるたびに、JRun は出力先に 2 つのメッセージを送信します。最初のメッセージには、識別情報、そのメソッド タイミングの開始を示すテキスト、およびメソッドの開始時間が記載されます。2 番目のメッセージには、同じ識別情報とメソッド タイミングの終了を示すテキストのほかに、メソッドのミリ秒単位の終了時間および経過時間が記載されます。
現在のメソッド呼び出しに関するメッセージの形式には、次のコンポーネントが含まれます。
currentTimeMillis loglevel type,className,hashCode,methodName,
methodType,elapsed
doGet
メソッドを開始したり終了することによって生成されるタイミング メッセージの例を次に示します。
11/15 03:41:50 info ENTER,HelloWorld,-100030151,doGet,
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http /HttpServletResponse;)V 11/15 03:41:50 info EXIT,HelloWorld,-100030151,doGet, (Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/ HttpServletResponse;)V,3
EXIT
メッセージの最後のコンポーネントは、メソッドのミリ秒単位の継続時間です。
呼び出されたメソッド呼び出しメッセージの形式には、次のコンポーネントが含まれます。このメッセージの形式には、現在のメソッド呼び出しメッセージのすべてのコンポーネントと次の追加コンポーネントが含まれます。追加コンポーネントは太字で示されています。
currentTime loglevel type,className hashCode,methodName,
methodType,callClassName,callMethodName,callMethodType,line,elapsed
JSP で呼び出されたメソッドを開始したり終了することによって生成されたタイミング メッセージの例を次に示します。
jrun__SampleWithStats2ejsp14
です (この名前は、JRun によりコンパイル済みのファイルに割り当てられます)。
_jspService
です。 java.sql.DriverManager
です。 getConnection
です。 03/16 13:32:12 info (JRun) CALLENTER,jrun__SampleWithStats2ejsp14,
73057990,_jspService,Ljavax/servlet/http/HttpServletRequest;Ljavax/ servlet/http/HttpServletResponse;)V,java.sql.DriverManager, getConnection,Ljava/lang/String;Ljava/lang/String;Ljava/lang/ String;)Ljava/sql/Connection;,58 03/16 13:32:13 info (JRun) CALLEXIT,jrun__SampleWithStats2ejsp14, 73057990,_jspService,Ljavax/servlet/http/HttpServletRequest;Ljavax/ servlet/http/HttpServletResponse;)V,java.sql.DriverManager, getConnection,Ljava/lang/String;Ljava/lang/String;Ljava/lang/ String;)Ljava/sql/Connection;,58,828
既定では、JRun はアプリケーションを実行する JRun サーバーのログ ファイルにタイミング メッセージを書き込みます。これらのメッセージをクライアントまたは別のファイルに書き込むように、JRun に指示することもできます。
local.properties
ファイルでこのプロパティを設定して、計測を有効にできます。timing.enabled=true
このオプションを有効にしない場合、クライアントに返される情報は、サーブレット の合計実行時間のみです。
local.properties
ファイルで次のプロパティを設定します。 timing.logging.class=threadlogger
JRunStats
を使用して、要求に関する統計情報を表示します。 JRunStats
サーブレットと SnoopServlet
をつなぎます。
http://localhost/servlet/SnoopServlet,JRunStats
RequestDispatcher rd = req.getRequestDispatcher("/servlet/ JRunStats"); rd.include(req,resp);
メソッド タイミングを有効にすると、クライアントに送信される出力情報には、サーブレットの合計実行時間のほかに次の情報が含まれます。
次の図は、JRun に付属するサーブレット SnoopServlet
に関するタイミングの出力例を示します。この例で使用されている URL は、次のとおりです。
http://localhost/servlet/SnoopServlet,JRunStats
この例では、情報の最初の行はメソッド呼び出し SnoopServlet.service
に関する内容です。このタイミング情報は、SnoopServlet.service
によって呼び出されるメソッドに関するものではなく、SnoopServlet.service
によって呼び出されるメソッドに関する内容であるため、Called Class.Method
および Line
フィールドは空になります。
情報の 3 行目は、JRunDemoServlet.generateDemoPageStart
メソッドに関する内容です。このメソッドは、SnoopServlet.service
によって呼び出されます。
タイミング メッセージを別のファイルに書き込むように JRun を設定することもできます。
この例では、HelloWorld
クラス (現在のメソッド) の doGet
メソッドと doPost
メソッドのメソッド タイミングを計測し、javax.servlet.http.*
のメソッド (呼び出されたメソッド) への呼び出し時間を計測します。プロパティは、fileInstrumentWriter
というファイル ライターを定義し、timing.log
という名前の付いたファイルにタイミング メッセージを書き込みます。
# 計測を有効にします。
timing.enabled=true #すべてのサーブレットから、計測の対象および対象外となる
# メソッドを指定します。
timing.excludecalls=java.*,javax.*,sun.*,org.omg.CORBA.* timing.includecalls=java.sql.* # ログ グループを設定します。 logging.groups=instrumentLog # instrumentLogログ グループおよび名前付きロガーを設定します。
logging.groups.instrumentLog.timingNamedLogger=info logging.groups.instrumentLog.listeners=instLogThreadLog logging.instLogThreadLog.class=allaire.jrun.logging.ThreadedLogger logging.instLogThreadLog.listeners=fileInstrumentWriter #ファイル ライターを定義します。このファイル ライターにより、すべてのイベントが
# 1 つのファイルに書き込まれます。
logging.fileInstrumentWriter.class = allaire.jrun.logging.FileLogWriterlogging.fileInstrumentWriter.filename = {jrun.roodir}/logs/timing.log
logging.fileInstrumentWriter.rotationsize = 100000 logging.fileInstrumentWriter.rotationfiles = 3 # ロガー名を定義します。 timing.logging.class=simplelogger # ロガー用のクラス ファイルを指定します。 timing.simplelogger.class=allaire.jrun.methodTimer.SimpleLogger timing.simplelogger.level=info timing.simplelogger.entermethod=ENTER timing.simplelogger.exitmethod=EXIT timing.simplelogger.beforemethodcall=CALLENTER timing.simplelogger.aftermethodcall=CALLEXIT timing.simplelogger.delimiter=, timing.simplelogger.loggername=timingNamedLogger # 計測するサーブレットを指定して、タイミングを計測する現在のレベルおよび # 呼び出されたレベルのメソッドを定義します。この例では、doGet メソッド、doPost メソッド、 # および doGet の呼び出されたすべてのメソッド呼び出しを計測します。 timing.classes=hWorld timing.hWorld.class=HelloWorld timing.hWorld.methods=doGet,doPost timing.hWorld.calls=javax.servlet.http.* timing.hWorld.doGet.calls=*
この例では、JSP ページの実行時間がクライアントに返されます。JRun ログ ファイルに情報を書き込むために、この例を変更することもできます。
次の手順に従って、JSP タイミング情報をクライアントに返します。
local.properties
ファイルで timing.enabled
プロパティを次のように設定します。timing.enabled=true
このオプションを有効にしない場合、サーブレットの合計実行時間のみがクライ アントに返されます。
timing.logging.class=threadlogger
timing.jsp.class=allaire.jrun.jsp.HttpJSPServlet timing.jsp.subclasses=true timing.jsp.methods=* timing.jsp.calls=*,javax.servlet.*
これらの設定によって、HttpJSPServlet
を直接スーパークラスとするすべての
クラスに対してタイミングが計測されるように指定します。JRun では、すべての
メソッドのパフォーマンスと、既定で timing.excludecalls
プロパティにより
除外されている javax.servlet.*
呼び出しを含むメソッド内の呼び出しがすべて
計測されます。
JRunStats
を使用して、"クライアントへのタイミング メッセージの書き込み"に示しているように、要求に関する統計情報を表示します。