nlog.config 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. autoReload="true"
  5. throwExceptions="true"
  6. internalLogLevel="Info"
  7. internalLogFile="${basedir}/NLog/${date:format=yyyyMM}/Bussiness.txt">
  8. <extensions>
  9. <add assembly="NLog.Web.AspNetCore"/>
  10. </extensions>
  11. <!-- 定义变量当前应用程序名称 -->
  12. <variable name="AppName" value="Bussiness" />
  13. <!-- 日志输出目标 -->
  14. <targets>
  15. <!--把日志输出到控制台 -->
  16. <target xsi:type="Console" name="lifetimeConsole" layout="${level:truncate=4:tolower=true}: ${logger}[0]${newline} ${message}${exception:format=tostring}" />
  17. <!--把日志输出到数据库 -->
  18. <target xsi:type="Database" name="database" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector" connectionString="${configsetting:item=ConnectionStrings.DOPLog}">
  19. <install-command ignoreFailures="true">
  20. <text>
  21. <!-- NOTE: call LogManager.Configuration.Install(new InstallationContext()); to execute this query. -->
  22. CREATE TABLE IF NOT EXISTS `Sys_Log${date:format=yyyyMM}` (
  23. `id` bigint NOT NULL AUTO_INCREMENT,
  24. `createtime` datetime NOT NULL,
  25. `appname` varchar(50) NOT NULL,
  26. `modulename` varchar(50) NULL,
  27. `level` varchar(50) NOT NULL,
  28. `logger` varchar(1024) NULL DEFAULT NULL,
  29. `msg` text NULL,
  30. `userid` varchar(50) NULL DEFAULT NULL,
  31. `url` varchar(1024) NULL DEFAULT NULL,
  32. `ip` varchar(255) NULL DEFAULT NULL,
  33. `tenantId` varchar(50) NULL,
  34. PRIMARY KEY (`id`) USING BTREE
  35. );
  36. </text>
  37. </install-command>
  38. <commandText>
  39. INSERT INTO `Sys_Log${date:format=yyyyMM}`(`createtime`, `appname`, `modulename`, `level`, `logger`, `msg`,`userid`, `url`, `ip`,`tenantId`) VALUES (@CreateTime, @AppName,@ModuleName, @Level, @Logger, @Msg, @UserId, @Url, @IP,@TenantId);
  40. </commandText>
  41. <parameter name="@CreateTime" layout="${longdate}" />
  42. <parameter name="@AppName" layout="${var:AppName}" />
  43. <parameter name="@ModuleName" layout="${event-context:item=ModuleName}" allowDbNull="true"/>
  44. <parameter name="@Level" layout="${level}" />
  45. <parameter name="@Logger" layout="${logger}" allowDbNull="true" />
  46. <parameter name="@Msg" layout="${event-context:item=Msg}" allowDbNull="true" />
  47. <parameter name="@UserId" layout="${aspnet-user-claim:userId}" allowDbNull="true" />
  48. <parameter name="@Url" layout="${aspnet-request-url}" allowDbNull="true" />
  49. <parameter name="@IP" layout="${aspnet-request-ip}" allowDbNull="true" />
  50. <parameter name="@TenantId" layout="${event-context:item=TenantId}" allowDbNull="true" />
  51. </target>
  52. </targets>
  53. <!-- 日志输出规则 -->
  54. <rules>
  55. <!--All logs, including from Microsoft-->
  56. <!--<logger name="*" minlevel="Trace" writeTo="allfile" />-->
  57. <!--Output hosting lifetime messages to console target for faster startup detection -->
  58. <logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="lifetimeConsole,database" final="true" />
  59. <logger name="Microsoft.EntityFrameworkCore.Model.Validation" maxlevel="Error" final="true" />
  60. <!--Skip non-critical Microsoft logs and so log only own logs (BlackHole) -->
  61. <logger name="Microsoft.*" maxlevel="Info" final="true" />
  62. <logger name="System.Net.Http.*" maxlevel="Info" final="true" />
  63. <logger name="*" minlevel="Trace" writeTo="lifetimeConsole,database" />
  64. </rules>
  65. </nlog>