在VS和VSCODE中使用Nlog
一、导入NLog
VS:"选择管理解决方案的NuGet程序包 "
VSCODE:打开终端 输入
dotnet add <解决方案> package NLog (如当前文件夹可不填解决方案,详细参考官方文档)
二、配置NLog.config文件(如果Nuget引用NLog没有生成对应配置文件时,需要自己添加)
<?xml version="1.0" encoding="utf-8" ?>
<!--
This file needs to be put in the application directory. Make sure to set
'Copy to Output Directory' option in Visual Studio.
-->
<!--throwExceptions 记录NLog内部报错,internalLogFile路径 internalLogLevel报错等级 -->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
throwExceptions="true" internalLogFile="D:\nlog.txt" internalLogLevel="Debug"
>
<targets>
<target xsi:type
="Database" name="database" connectionstring="连接字符串">
<!--mysql使用下面一句-->
<!--target xsi:type
="Database" name="database" dbProvider="MySql.Data.MySqlClient.MySqlConnection,Mysql.Data" connectionstring="连接字符串"-->
<commandText>
<!--如果使用mysql则需要修改sql语句 mysql字段应为 `CreateDate`,不支持'[]'-->
insert into MyLog ([CreateDate], [Origin], [LogLevel], [Message], [StackTrace]) values (@createDate, @origin, @logLevel, @message, @stackTrace);
</commandText>
<parameter name="@createDate" layout="${longdate}"/>
<!--日志发生时间-->
<parameter name="@origin" layout="${callsite}"/>
<!--日志来源-->
<parameter name="@logLevel" layout="${level}"/>
<!--日志等级-->
<parameter name="@message" layout="${message}"/>
<!--日志信息-->
<parameter name="@stackTrace" layout="${stacktrace}"/>
<!--堆栈信息-->
</target>
</targets>
<rules>
<!-- add your logging rules here -->
<logger name="*" writeTo="database"/>
<!--
<logger name="*" minlevel="Trace" writeTo="f" />
-->
</rules>
</nlog>
三、设置NLog
VS中:选择NLog.config 选择始终复制到输出目录
VSCODE、
终端输入命令 dotnet build 生成项目后
将NLog.config 手动复制到生成目录下
四、调用
private static Logger logger = LogManager.GetCurrentClassLogger(); //Logger对象代表与当前类相关联的日志消息的来源
static void Main(string[] args)
{
logger.Trace("输出一条记录信息成功!");//最常见的记录信息,一般用于普通输出
logger.Debug("输出一条Debug信息成功!"); //同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序
logger.Info("输出一条消息类型信息成功!");//信息类型的消息
logger.Warn("输出一条警告信息成功");//警告信息,一般用于比较重要的场合
logger.Error("输出一条错误信息成功!");//错误信息
logger.Fatal("输出一条致命信息成功!");//致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。
}