-
-
Save oscarryz/3147119 to your computer and use it in GitHub Desktop.
Obtener un log del SQL generado por un DataContext
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private TRet WithLogging<T, TRet>(T context, string logmsg, Func<T, TRet> func) where T : DataContext | |
{ | |
TRet result; | |
var temporal = new TemporalLogger.Create(logmsg, context.Log, Log); | |
try | |
{ | |
context.Log = temporal.Log(); | |
result = func.Invoke(context); | |
} | |
finally | |
{ | |
context.Log = temporal.Original(); | |
} | |
return result; | |
} | |
... | |
class TemporalLogger | |
{ | |
public static TemporalLogger Create(string message, TextWriter originalLog , ILog withLogger) | |
{ | |
return withLogger.IsDebugEnabled | |
? new TemporalLogger{_msg = message, _builder = new StringBuilder(), _original = originalLog, _log = withLogger } | |
: new DumbLogger{_original = originalLog}; | |
} | |
private string _msg; | |
private TextWriter _original; | |
private ILog _log; | |
private StringBuilder _builder; | |
public virtual TextWriter Log() | |
{ | |
return new StringWriter(_builder); | |
} | |
public virtual TextWriter Original() | |
{ | |
_log.DebugFormat("{0}:\n{1}", _msg, _builder); | |
var t = _original; | |
_original = null; | |
return t; | |
} | |
} | |
class DumbLogger : TemporalLogger | |
{ | |
private TextWriter _original; | |
public override TextWriter Log() { return _original; } | |
public override TextWriter Original() | |
{ | |
var t = _original; | |
this._original = null; | |
return t; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment