我正在尝试使用NLog(版本4)将一些数据保存到SQL Server表中。我有一个参数不包含任何正常NLog参数的过程。
我的nlog.config
看起来像这样:
<target xsi:type="Database"
name="database"
dbProvider="System.Data.SqlClient"
connectionStringName="nlogConnection"
commandText="EXEC dbo.usp_LogParserMessage @Message, @Parser, @Org, @LabOrg, @ChartNum, @AccessionId, @Status, @TransId">
<parameter name="@Message" layout="${Message}"/>
<parameter name="@Parser" layout="${event-properties:item=parser}"/>
<parameter name="@Org" layout="${event-properties:item=org}"/>
<parameter name="@LabOrg" layout="${event-properties:item=laborg}"/>
<parameter name="@ChartNum" layout="${event-properties:item=chartnum}"/>
<parameter name="@AccessionId" layout="${event-properties:item=accessionid}"/>
<parameter name="@Status" layout="${event-properties:item=status}"/>
<parameter name="@TransId" layout="${event-properties:item=transid}"/>
</target>
我尝试创建一个自定义类来填充参数。
public LogHelper(string name)
{
_logger = LogManager.GetLogger("database");
}
public void WriteMessage(string parser, string message, string org, string laborg, string chartNum, string accessionId, string status, string transid)
{
///
/// create log event from the passed message
///
LogEventInfo logEvent = new LogEventInfo(LogLevel.Trace, "", message);
//
// set event-specific context parameter
// this context parameter can be retrieved using ${event-context:EventID}
//
logEvent.Properties["parser"] = parser;
logEvent.Properties["org"] = org;
logEvent.Properties["laborg"] = laborg;
logEvent.Properties["chartnum"] = chartNum;
logEvent.Properties["accessionid"] = accessionId;
logEvent.Properties["status"] = status;
logEvent.Properties["transid"] = transid;
//
// Call the Log() method. It is important to pass typeof(MyLogger) as the
// first parameter. If you don't, ${callsite} and other callstack-related
// layout renderers will not work properly.
//
try
{
_logger.Log(logEvent);
}
catch (Exception er)
{
string error = er.ToString();
}
}
它不会抛出错误,但也不会写入数据库。
我很感激任何建议或其他方式来做到这一点。
由于 辙