log LINQ to SQL generato SQL per NLog
-
19-09-2019 - |
Domanda
Vorrei utilizzare NLog all'uscita il mio LINQ to SQL generato SQL per il file di log
per es.
db.Log = Console.Out
riporta il codice SQL generato alla console, http://www.bryanavery.co.uk/post/2009/03/06/Viewing-the-SQL-that-is-generated-from-LINQ -to-SQL.aspx
Come posso ottenere il registro per accedere al NLog?
Soluzione
Hai solo bisogno di una classe di agire come un TextWriter che LINQ to SQL ha bisogno di spedire tramite il metodo che si desidera, per esempio.
db.Log = new ActionTextWriter(s => logger.Debug(s));
Ecco un writer di testo po 'ho scritto che prende un delegato e dispacci a quello in modo da utilizzare il codice precedente. Probabilmente si vorrebbe cambiare questa classe così c'è voluto un registratore, ha fatto un po 'di elaborazione / scissione sul testo e poi spedito fuori per 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; }
}
}