【.Net8.0 nlog mysql8.4】在.NET8.0环境下使用nlog输出日志文件到mysql8.4数据库

在.NET8.0环境下使用nlog输出日志文件到mysql8.4数据库

nuget包准备

在这里插入图片描述提前准备好如图所示的Nuget包。

完成数据库连接配置

这里提供我使用的nlog配置作为参考

<?xml version="1.0" encoding="utf-8"?>
<!--Nlog内部日志配置,记录nlog运行时的问题-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
	  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true" 
	  throwExceptions="false"
      internalLogLevel="Warn"
	  internalLogFile="${basedir}logs\NlogRecords.log"> 
  <targets>
	  <!--输出文件 按天归档,最多存档文件100个,单个文件不超过1M,-->
    <target name="logFile" xsi:type="File" keepFileOpen="false" encoding="utf-8" concurrentWrites="false"
					fileName="${basedir}\logs\${shortdate}.log"
					archiveAboveSize="1048576"
	                archiveNumbering="Sequence"
	                maxArchiveFiles="100"
				    archiveEvery="Day"
				    layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />

    <!--输出彩色控制台 xsi:type="Console"是指定输出到普通控制台-->
    <target name="logConsole" xsi:type="ColoredConsole"
				useDefaultRowHighlightingRules="false"
				layout="${longdate}|${level:uppercase=true}|${logger}|${message}">
        <highlight-row condition="level == LogLevel.Trace" foregroundColor="DarkGray" />
	    <highlight-row condition="level == LogLevel.Debug" foregroundColor="Green" />
	    <highlight-row condition="level == LogLevel.Info" foregroundColor="White" />
	    <highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
	    <highlight-row condition="level == LogLevel.Error" foregroundColor="Red" />
	    <highlight-row condition="level == LogLevel.FATAL" foregroundColor="Magenta" />
    </target>

	<!--写入数据库 xsi:type="Database"是指定输出到数据库-->
	<target name="mysql_log" xsi:type="Database"
	  dbProvider="MySql.Data.MySqlClient.MySqlConnection,MySql.Data"
	  connectionString="server=127.0.0.1;database=ApplicationLog;user=playgameserver;pwd=pwd_playganmeserver;port=3306"
	  commandText="Insert Into LogRecords(Application,CreateDateTime,LogLevel,Logger,Message,Exception) values (@Application,@CreateDateTime,@LogLevel,@Logger,@Message,@Exception);"	
	  >
	 <parameter name ="@Application" layout="playgames_server"/>
	 <parameter name ="@CreateDateTime" layout="${date}"/>
	 <parameter name ="@LogLevel" layout="${level}"/>
	 <parameter name ="@Logger" layout="${logger}"/>
	 <parameter name ="@Message" layout="${message}"/>
	 <parameter name ="@Exception" layout="${exception:tostring}"/>

	</target>
    <target xsi:type="Null" name="blackhole" />

  </targets>
  <rules>
  	<!--过滤掉Microsoft的日志-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
	<logger name="*" minlevel="Trace" writeTo="mysql_log" />
    <logger name="*" minlevel="Trace" writeTo="logFile" />
	<logger name="*" minlevel="Trace" writeTo="logConsole" />
  </rules>
</nlog>

完成数据库配置

由于我们使用的MySql版本为8.4,此版本的用户加密插件默认为 caching_sha2_password,然而我们用到的工具包并不支持此类加密方式,因此,需要修改加密方式为 mysql_native_password

查看mysql插件状态,登录mysql数据库,依次执行以下两条命令。查看mysql_native_password插件状态,如果为 ACTIVE 则不需要更改。(默认为DISABLED)

use mysql
show plugins;

在这里插入图片描述
若为DISABLED,可以通过修改mysql数据库的配置文件my.ini,增加 mysql_native_password = ON 来开启mysql_native_password 插件。

然后通过mysql指令修改连接数据库所用的用户的加密插件即可。

alter user 'playgameserver'@'localhost' IDENTIFIED with mysql_native_password by 'pwd_playganmeserver';

需要注意的是MySql8.4的my.ini文件并不在MySql程序的安装目录下,而是在ProgramData目录下,此目录默认为隐藏目录。C:\ProgramData\MySQL\MySQL Server 8.4
在这里插入图片描述
在这里插入图片描述
至此已经完成了全部配置工作,运行程序即可看到日志被写入数据库。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值