NLogを使用して、LINQtoSQLで生成されたSQLをログファイルに出力したい
例えば
db.Log = Console.Out
生成されたSQLをコンソールhttp://www.bryanavery.co.uk/post/2009/03/06/Viewing-the-SQL-that-is-generated-from-LINQ-to-SQL.aspxに報告します
ログを取得してNLogに記録するにはどうすればよいですか?
NLogを使用して、LINQtoSQLで生成されたSQLをログファイルに出力したい
例えば
db.Log = Console.Out
生成されたSQLをコンソールhttp://www.bryanavery.co.uk/post/2009/03/06/Viewing-the-SQL-that-is-generated-from-LINQ-to-SQL.aspxに報告します
ログを取得してNLogに記録するにはどうすればよいですか?
LINQ to SQLが必要なメソッドを介してディスパッチする必要があるTextWriterとして機能するクラスが必要です。たとえば、
db.Log = new ActionTextWriter(s => logger.Debug(s));
これが私が書いた小さなテキストライターで、デリゲートを受け取り、それにディスパッチするので、上記のコードを使用します。このクラスを変更して、ロガーを取得し、テキストに対して処理/分割を行ってから、NLogにディスパッチすることをお勧めします。
class ActionTextWriter : TextWriter {
private Action<string> action;
public ActionTextWriter(Action<string> action) {
this.action = action;
}
public override void Write(char[] buffer, int index, int count) {
Write(new string(buffer, index, count));
}
public override void Write(string value) {
action.Invoke(value);
}
public override Encoding Encoding {
get { return System.Text.Encoding.Default; }
}
}