log сгенерированный LINQ-to-SQL SQL в NLog

Я хотел бы использовать 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?


person Coppermill    schedule 05.10.2009    source источник


Ответы (1)


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