C# 要使用NLog在其他文件中记录数据库连接失败问题吗
我正在使用.NETCore2.2和MySQL。 使用NLog将应用程序的常规日志记录到数据库中,但我只想将数据库错误(如果在记录时发生)记录到文件中 如何使用自定义字段(如UserID)捕获文件的DB连接故障。 以下是NLog.config的代码:C# 要使用NLog在其他文件中记录数据库连接失败问题吗,c#,.net-core,asp.net-core-webapi,nlog,C#,.net Core,Asp.net Core Webapi,Nlog,我正在使用.NETCore2.2和MySQL。 使用NLog将应用程序的常规日志记录到数据库中,但我只想将数据库错误(如果在记录时发生)记录到文件中 如何使用自定义字段(如UserID)捕获文件的DB连接故障。 以下是NLog.config的代码: <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="ht
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="false"
internalLogLevel="Warn"
internalLogFile="D:\logs\New\internal-nlog.txt">
<targets>
<target name="database" xsi:type="Database"
dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"
connectionString="${var:myConnectionstring}">
<commandText>
insert into log (
Logged, Message,
CallSite, Exception, userID
) values (
@Logged, @Message,
@Callsite, @Exception, @userID
);
</commandText>
<parameter name="@logged" layout="${date}" />
<parameter name="@message" layout="${message}" />
<parameter name="@callSite" layout="${event-properties:Callsite}" />
<parameter name="@exception" layout="${exception:tostring}" />
<parameter name="@userID" layout="${event-properties:userID}" />
</target>
</targets>
<rules>
<logger name="*" level="Error" writeTo="database" />
</rules>
</nlog>
你能给我们看一下你的日志代码吗?它会更有用。请不要使用
Logger.SetProperty
你将进入一个痛苦的世界。改为使用LogEvent Properties Dictionary显示以下示例:尝试激活NLog内部记录器,查看在登录到数据库时是否存在任何错误:
Logger logger = LogManager.GetCurrentClassLogger();
LogManager.Configuration.Variables["myConnectionstring"]=Setting.connString;
LogManager.ReconfigExistingLoggers();
logger.SetProperty("userID", "UR0001");
logger.SetProperty("Callsite", ex.Error.TargetSite.Name);
logger.LogException(NLog.LogLevel.Error, ex.Error.Message,ex.Error);