Question

Je voudrais utiliser NLog pour produire mon LINQ to SQL généré SQL dans le fichier journal

par exemple.

db.Log = Console.Out

rapports SQL généré à la console, http://www.bryanavery.co.uk/post/2009/03/06/Viewing-the-SQL-that-is-generated-from-LINQ -à-SQL.aspx

Comment puis-je obtenir le journal de se connecter à NLog?

Était-ce utile?

La solution

Vous avez juste besoin d'une classe d'agir comme TextWriter que LINQ to SQL doit envoyer via la méthode que vous voulez, par exemple.

db.Log = new ActionTextWriter(s => logger.Debug(s));

Voici un écrivain petit texte que j'ai écrit qui prend un délégué et dépêches à ce que vous utilisez le code ci-dessus. Vous auriez probablement eu envie de changer cette classe donc il a fallu un enregistreur, a fait un certain traitement / séparation sur le texte, puis expédié hors de 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; }
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top