是否可以使用Log4Net写入CLR存储过程中的日志文件?
问题:无法在CLR存储过程中使用Log4net调试(写入)日志文件。我构建CLR项目的方式可能有问题?我只是将DLL导入sql server(创建程序集…)。我也需要导入App.Config吗 DLL名称: CLRTest.dll 源代码:是否可以使用Log4Net写入CLR存储过程中的日志文件?,log4net,clrstoredprocedure,Log4net,Clrstoredprocedure,问题:无法在CLR存储过程中使用Log4net调试(写入)日志文件。我构建CLR项目的方式可能有问题?我只是将DLL导入sql server(创建程序集…)。我也需要导入App.Config吗 DLL名称: CLRTest.dll 源代码: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlTypes; using System.Da
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using log4net;
using log4net.Config;
public class MyClass
{
private readonly static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string sContextConn = "Context Connection=true";
[Microsoft.SqlServer.Server.SqlProcedure]
public static void Select1()
{
XmlConfigurator.Configure();
log.Debug("Begin Select1()...");
using (SqlConnection connection = new SqlConnection(sContextConn))
{
connection.Open();
SqlCommand command = new SqlCommand("select 1", connection);
SqlDataReader r = command.ExecuteReader();
SqlContext.Pipe.Send(r);
}
log.Debug("End Select1()...");
}
}//end MyClass
Log4Net XML配置(App.Config):
SQL输出:
(没有列名称)
1您正在进行的log4net配置程序调用实际上是在尝试查找。我不知道存储过程的
AppDomain
是什么
您可能希望尝试配置文件并使用该配置程序的重载
log4net.Config.XmlConfigurator.Configure(new FileInfo("config.log4net"));
我希望你正在做更多的日志记录。根据上面的代码片段,只需将一条消息记录到一个文件中,就不必担心所有的log4net内容。执行
文件.writealText
或其他操作。
drop procedure clr_Select1
go
drop assembly CLRTest
go
create ASSEMBLY CLRTest FROM 'C:\Share\ClrSql\TEST\CLRTest.dll' WITH PERMISSION_SET = unsafe
go
CREATE PROCEDURE clr_Select1
AS EXTERNAL NAME CLRTest.MyClass.Select1
go
exec clr_Select1
log4net.Config.XmlConfigurator.Configure(new FileInfo("config.log4net"));