1.添加NLog的引用
在程序包管理控制平台中执行 Install-Package NLog
2.添加NLog的配置,在项目中添加Web配置文件输入文件名,NLog.config
3.编写配置文件, Nlog.config 内容如下
<?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="false"
throwExceptions="true"> // 注意此处要是false, 当日志发生异常程序不会发生异常,对于调试来说不适用。项目发布时选择false,较妥当。
<targets>
<target xsi:type ="File" //文件设置
name="file"
fileName="${basedir}/App_Data/Logs/${shortdate}.log"
layout="${longdate} - ${level:uppercase=true}:${message} ${callsite:fileName=true} ${exception:format=Type,Message,Method,StackTrace:maxInnerExceptionLevel=5:innerFormat=ShortType,Message,Method,StackTrace}"
keepFileOpen="false"
archiveFileName="${basedir}/App_Data/Logs/Backup_${shortdate}.{##}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="30">
</target>
<target xsi:type="Database" //数据库设置
name="database"
dbProvider="Npgsql.NpgsqlConnection,Npgsql,Version=3.0.1.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7" //注意此处必须这么填写,否则会提示创建连接异常
connectionString="Server=localhost;Database=onlinetest;User Id=otadmin;Password=otadmin;"> //链接字符串
<commandText> //添加SQL
INSERT INTO log(event_time, level, logger, message, exce_type, operation,exce_message, stacktrace, username) VALUES (now(), @level, @logger, @message, @exce_type, @operation,@exce_message, @stacktrace, @username);
</commandText>
<parameter name="@level" layout="${level}" /> //参数值映射
<parameter name="@logger" layout="${logger}" />
<parameter name="@message" layout="${message}" />
<parameter name="@exce_type" layout="${exception:format=type}" />
<parameter name="@operation" layout="${exception:format=method}" />
<parameter name="@exce_message" layout="${exception:format=message}" />
<parameter name="@stacktrace" layout="${exception:format=stacktrace}" />
<parameter name="@username" layout="${identity}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Warn" writeTo="file" />
<logger name="*" minlevel="Debug" maxlevel="Info" writeTo="database" />
</rules>
</nlog>
说明:要是将上面的配置拷贝后直接可用必须将//后面的注释删除否则会不正确。
参数映射Postgres数据库datetime类型字段提示错误。没有解决。