.Net Core Nlog日志记录到MySql
前段时间想要实现这个功能网上找了很多资料,现在整理一下发布出来,希望给大家一点帮助。 首先是依赖项的选择:

关于NLog版本不是最新是因为最新版本有点问题我试了试不支持,所以选了这几个版本,MySql的版本是因为Nlog的配置默认是不支持MySql直连的。这是准备工作。
然后是Nlog.config的配置:
 <target xsi:type="Null" name="blackhole" />
    <target 
xsi:type="Database" name="database" 
dbProvider="MySql.Data.MySqlClient.MySqlConnection,Mysql.Data" 
connectionstring="server=;user id=;password=;Database=testing;" 
commandText="insert into access_log(app_key,access_ip,access_time,msg) 
values (@app_key,@access_ip,@access_time,@msg)" >
      <parameter name="app_key" layout="${event-context:item=app_key}" />
      <parameter name="access_ip" layout="${event-context:item=access_ip}" />
      <parameter name="access_time" layout="${event-context:item=access_time}" />
      <parameter name="msg" layout="${event-context:item=msg}" />
    </target>
这个parameter的属性是选择性上次必要的,Log日志内容需要自己定义格式和它一样就可以了,不需要的日志他是不会记录的
 <rules>
    <logger name="*" writeTo="database"/>
</rules>
这是规则。
 //LogEventInfo ei = new LogEventInfo();
                //ei.Level = LogLevel.Info;
                //ei.Properties["app_key"] = param["appKey"].ToString();
                //ei.Properties["access_ip"] = accessIp;
                //ei.Properties["access_time"] =accessDate;
                //ei.Properties["msg"] = log;
                //_logger.Log(ei);
这是日志格式。其他问题其实网上都有解答,最主要的问题就是dbProvider属性是不能直接写MySql的。
有什么不足和建议可以和我提,共同进步!

                
            
        
浙公网安备 33010602011771号