我开始开发一个新的基于subsonic3 (用于查询)和log4net (用于日志)的asp.net应用程序,我想知道如何将subsonic3与log4net接口,以便log4net记录subsonic使用的底层sql。
这就是我到目前为止所知道的:
public static IEnumerable<arma_ocorrencium> ListArmasOcorrencia()
{
if (logger.IsInfoEnabled)
{
logger.Info("ListarArmasOcorrencia: start");
}
var db = new BdvdDB();
var select = from p in db.arma_ocorrencia
select p;
var results = select.ToList<arma_ocorrencium>(); //Execute the query here
if (logger.IsInfoEnabled)
{
// log sql here
}
if (logger.IsInfoEnabled)
{
logger.Info("ListarArmasOcorrencia: end");
}
return results;
}发布于 2010-06-30 12:01:27
您可以使用Provider类的Log属性:
_db.Provider.Log = Console.Out;将您的SQL语句记录到控制台。如果您想使用log4net或类似的东西,则必须编写一个实现TextWriter的小型中介类,并将所有接收到的输入重定向到log4net。
发布于 2010-06-11 02:30:24
您可以像这样获得生成的sql:
string sql = select.GetQueryText();请确保您使用的是3.0.0.4或更高版本。
干杯
https://stackoverflow.com/questions/2848192
复制相似问题