クイックロギング

ここでは、頻繁に変化する要素の現在の状態を追跡する必要がありました。 誰かが彼をリセットしている疑いがありました。 ファイルシステムを介してログを書き込むためのオプションをすぐに却下しました。Silverlightは自分が望む場所に書き込むことはできません。 そのため、ブラウザコンソールにデバッグ情報を出力する小さな拡張メソッドが作成されました。

public static class Extensions
{
public static void Log( this object obj)
{
HtmlWindow window = HtmlPage.Window;
object isConsoleAvailable =
window.Eval( "typeof(console) != 'undefined' && typeof(console.log) != 'undefined'" );

if ( (isConsoleAvailable is bool ) && ( bool )isConsoleAvailable)
{
var console = (window.Eval( "console.log" ) as ScriptObject);
if (console != null )
{
console.InvokeSelf(obj);
}
}
}
}


* This source code was highlighted with Source Code Highlighter .


これは非常に単純に呼び出されます。オブジェクト上で、Log()メソッドを呼び出すだけです。
通常、文字列を準備してログに記録します。

string message = string .Format( "{0}: object {1} ScrollPosition = {2}" , DateTime .Now.ToShortTimeString(),((ItemsControl)d).Name,e.NewValue.ToString());
message.Log();


* This source code was highlighted with Source Code Highlighter .


これは、FireFoxでの表示です(表示するにはFireBugが必要です)。


IE8では(F12キーを押して[スクリプト]タブに移動するだけです):


このメソッドは、デバッグ時にプロジェクト内の何かを見る必要がある場合に適しています。 長期のログ記録にはもちろんClogを使用することをお勧めします。 ただし、Silverlight 3はサポートしていません。

Source: https://habr.com/ru/post/J64062/


All Articles