Вам просто нужен класс, который будет действовать как 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; }
}
}
person
DamienG
schedule
08.10.2009