我想使用NLog将我的LINQ to SQL生成的SQL输出到日志文件
e.g。
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?
答案 0 :(得分:18)
你只需要一个类作为TextWriter,LINQ to SQL需要通过你想要的方法调度它,例如。
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; }
}
}