- - PR -
実行中のメソッドをメソッド内で取得する
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-16 14:16
良くやりそうなことなんですが、なかなか見つからないので
質問させてもらいました。 質問は、実行中のメソッドをメソッド内で取得する方法です。 Webサービス内で、実行時のトレースログを取得するため、 メソッドの開始時と終了時にログを出力したいと思っています。 Public Class Table Public Sub insert() log.out(Me.GetType().Name & " - insert START") : : : log.out(Me.GetType().Name & " - insert END") End Sub End Class 上記でも、クラス名、メソッド名を出力することができますが、 入力ミスがあった場合、意味をなさなくなってしまいます。 メソッド内で一律の書き方が可能であれば、 その方法を採用したいと思っているのですが、 良い方法はありますでしょうか? また、トレースのためにログ出力を行う手法についても ご意見があればお願いします。 | ||||
|
投稿日時: 2004-12-16 14:45
System.Reflection.MethodBase.GetCurrentMethod()で取れることはとれます。 | ||||
|
投稿日時: 2004-12-16 15:01
なるほど。じゃあ、先ほどのソースは、こうなるわけですね。 Public Class Table Public Sub insert() log.out(Me.GetType().Name & " - " & System.Reflection.MethodBase.GetCurrentMethod() & " START") : : : log.out(Me.GetType().Name & " - " & System.Reflection.MethodBase.GetCurrentMethod() & " END") End Sub End Class 1行が長くなってしますね。 また、各メソッドに記述しないといけないので大変ですね。 共通メソッドを作成するわけにもいかないし・・・。(共通メソッド名が出力されてしまう。) なんかうまい方法ないかな〜。 | ||||
|
投稿日時: 2004-12-16 15:21
Importsしちゃだめ?
_________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2004-12-16 15:36
一瞬、何のことか悩んでしまいました・・・。 こんな感じってことですね。 Imports System.Reflection.MethodBase Public Class Table Public Sub insert() log.out(Me.GetType().Name & " - " & GetCurrentMethod.Name & " START") : : : log.out(Me.GetType().Name & " - " & GetCurrentMethod.Name & " END") End Sub End Class ログ出力内容などの編集をどうにかすれば、そんなに気にならなそうですね。 #Webサービスのトレース手法について、何かあればお願いします。 | ||||
|
投稿日時: 2004-12-16 16:13
StackTraceとか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=11733 | ||||
|
投稿日時: 2004-12-16 17:04
これは、かなりの情報を取得できますね。 メソッド開始、終了のトレースログとしては、多いかも知れませんが、 Exception時のログとしてはいいですね。 ありがとうございました。 | ||||
|
投稿日時: 2004-12-17 00:18
StackFrameクラス使ってはいかがですか。 これを使うと共通メソッド化もできます。 '例) このメソッドを各メソッドで呼ぶと・・・ Public Sub DebugWriteLineMethodName() Debug.WriteLine(New StackFrame(1).GetMethod.Name) End Sub |