学习编程 2018-04-16
前段时间想要实现这个功能网上找了很多资料,现在整理一下发布出来,希望给大家一点帮助。 首先是依赖项的选择:
关于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的。
有什么不足和建议可以和我提,共同进步!