在我的代码中,我有一些信息消息,例如logger.Log("dwewe")
和logger.Debug("ddddf")
。
问题是即使我在VS中调试,也没有写入Debug消息。
<?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"
throwExceptions="true"
internalLogLevel="Trace"
internalLogFile="c:\nlog-app.log"
autoReload="false"
internalLogToConsole="true">
<!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<targets>
<!-- file targets -->
<target name="asyncFile" xsi:type="AsyncWrapper">
<target xsi:type="File" name="f" fileName="${basedir}/Logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message} ${event-context:item=error-source} ${event-context:item=error-class} ${event-context:item=error-method} ${event-context:item=error-message} ${event-context:item=inner-error-message} ${event-context:item=stack-trace}"/>
</target>
<!-- database targets -->
<target name="database" xsi:type="Database" keepConnection="true" useTransactions="true"
dbProvider="System.Data.SqlClient"
connectionString="data source=XXXXXX.database.windows.net;initial catalog=NLog;integrated security=false;persist security info=True;User ID=XXXXr;Password=BXXXX3"
commandText="INSERT INTO Logs(EventDateTime, EventLevel, UserName, MachineName, EventMessage, ErrorSource, ErrorClass, ErrorMethod, ErrorMessage, InnerErrorMessage, StackTrace) VALUES (@EventDateTime, @EventLevel, @UserName, @MachineName, @EventMessage, @ErrorSource, @ErrorClass, @ErrorMethod, @ErrorMessage, @InnerErrorMessage, @StackTrace)">
<!-- parameters for the command -->
<parameter name="@EventDateTime" layout="${date:s}" />
<parameter name="@EventLevel" layout="${level}" />
<parameter name="@UserName" layout="${windows-identity}" />
<parameter name="@MachineName" layout="${machinename}" />
<parameter name="@EventMessage" layout="${message}" />
<parameter name="@ErrorSource" layout="${event-context:item=error-source}" />
<parameter name="@ErrorClass" layout="${event-context:item=error-class}" />
<parameter name="@ErrorMethod" layout="${event-context:item=error-method}" />
<parameter name="@ErrorMessage" layout="${event-context:item=error-message}" />
<parameter name="@InnerErrorMessage" layout="${event-context:item=inner-error-message}" />
<parameter name="@StackTrace" layout="${event-context:item=stack-trace}" />
</target>
<target name="console" xsi:type="Console" />
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" minlevel="Info" writeTo="database" />
<logger name="*" minlevel="Error" writeTo="asyncFile" />
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
</
答案 0 :(得分:11)
您无法进行调试的原因是调试是最低级别日志级别 只需在nlog.config文件的rules标记中添加以下标记。
<logger name="*" minlevel="Debug" writeTo="console" />
答案 1 :(得分:2)
您正在使用3个不同的日志目标。
数据库目标设置为信息级别,因此调试消息不会出现在那里。 文件目标仅接受错误消息(和更高版本),因此也不会进行任何调试。
最后一个目标控制台是调试消息应该被插入的控制台。但是我看到你没有设置消息的布局。试着看at this documentation。它说布局是必填字段。
此外,我建议您暂时设置其他文件目标并将其设置为接受调试消息。
答案 2 :(得分:1)
对于有这个问题的其他人来说,类似问题的回答只是救了我:https://stackoverflow.com/a/8881521/3959735
如果您使用单独的NLog.config文件,请确保将其设置为&#34;始终复制&#34;通过其文件属性。或者,您可以在主App.config中包含NLog配置部分。
我想我可能通过尝试手动从另一个项目复制NLog配置文件来为自己造成这个问题;或者因为在我的项目中添加NLog时我收到了权限错误(我记不清任何具体细节) - 只是传递这些信息,以防有人帮助诊断自己的问题。
答案 3 :(得分:0)
将nlog.config文件添加到您的项目
我的配置文件示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="${basedir}/Logs/${date:format=yyyy-MM-dd}_log.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
</configuration>
答案 4 :(得分:0)
我发现问题与Visual Studio自动添加到项目的默认appsettings.json有关。看起来像这样。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
解决方案是删除或重命名此部分。
{
"Logging-DISABLE": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
这允许使用nlog.config。