首页 > 数据库 >Nlog写入MySql

Nlog写入MySql

时间:2025-01-11 09:45:29浏览次数:1  
标签:编码 Encoding Text 写入 System Nlog MySql NET CodePages

1.安装相关Nuget包

mysql.data,Nlog,Nlog.Database

2.新建配置文件,并右击配置文件修改属性 复制到输出目录-始终复制

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <nlog xmlns="http://www.nlog-project.org/schemas/nlog.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

        <!--输出目标,往哪里输出-->
        <targets>
            <!--此部分中所有目标输出讲自动异步-->
            <default-wrapper xsi:type="AsyncWrapper"></default-wrapper>

            <!--type:日志输出类型 File:文件 ColoredConsole:控制台-->
            <!--fileName:日志存储的路径以及名称-->
            <!--archiveFileName:要用于存档的文件名称,可以指定日志-->
            <!--archiveAboveSize:以字节为单位的大小,超过该大小的日志文件将被自动存档-->
            <!--archiveNumbering:对未见的编号方式-->
            <!--concurrentWrites:当使用KeepFileOpen=true时,支持从同一主机上的多个进程优化并入统一日志文件,通过使用一种特殊的技术,可以让文件从多个进程打开,如果只有单个进程正在记录日志,那么设置为concurrentwrites=false会更快-->
            <!--keepfileOpen:指示是否每次记录事件是保持日志文件打开,将此属性更改为True将大大提高性能,同时也会保持文件句柄锁定。启动此选型时,请考虑设置OpenFileCacheTimeOut,因为它允许操作并对删除的日志文件做出反应-->
            <!--项目日志保存文件路径说明fileNmae="${basedir}/保存目录",以年月日的格式创建/${shortdata}/${记录名称}-${单位记录}-${shortdata}.txt-->

            <target name="info_file"
                    xsi:type="File"
                    fileName="${basedir}/logs/${shortdate}/log_all_${shortdate}.log"
                    layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring}"
                    archiveFileName="${basedir}/archives/${shortdate}/all_${shortdata}--{####}.log"
                    archiveAboveSize="102400"
                    archiveNumbering="Sequence"
                    concurrentWrites="true"
                    keepFileOpen="false"
                    />
            <target name="error_file"
                    xsi:type="File"
                    fileName="${basedir}/logs/${shortdate}/log_error_${shortdate}.log"
                    layout="${longdate} | ${event-properties:item=EventId_Id:whenEmpty=0} | ${uppercase:${level}} | ${logger} | ${message} ${exception:format=tostring}"
                    archiveFileName="${basedir}/archives/${shortdate}/error_${shortdata}--{####}.log"
                    archiveAboveSize="102400"
                    archiveNumbering="Sequence"
                    concurrentWrites="true"
                    keepFileOpen="false"
                    />

            <!--使用可自定义的着色将日志消息写入控制台-->
            <!-- <target name="console" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" /> -->
            <target
                xsi:type="ColoredConsole"
                name="colorConsole"
                encoding="Encoding"
                detectConsoleAvailable="true"
                detectOutputRedirected="false"
                useDefaultRowHighlightingRules="false"
                header="--------------------"
                layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${exception} ${newline} ${stacktrace} ${newline}"
                footer="---------------------"
        >
                <highlight-row condition="level == LogLevel.Trace" foregroundColor="DarkGray"/>
                <highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkBlue"/>
                <highlight-row condition="level == LogLevel.Info" foregroundColor="White"/>
                <highlight-row condition="level == LogLevel.Warn" foregroundColor="DarkYellow"/>
                <highlight-row condition="level == LogLevel.Error" foregroundColor="Red"/>
                <highlight-row condition="level == LogLevel.Fatal" foregroundColor="DarkRed"/>
            </target>

            <!--将数据写入数据库-->
            <target xsi:type="Database" name="databaseTarget" 
                    dbProvider="MySql.Data.MySqlClient.MySqlConnection,MySql.Data"
                    connectionString="Server=localhost;Database=db_log;User Id=root;Password=123456;CharSet=utf8;">
                <commandText>
                    Insert into log(Date,Level,Message,Exception)Values(@time_stamp,@level,@message,@Exception);
                </commandText>
                <parameter name="@time_stamp" layout="${longdate}" />
                <parameter name="@level" layout="${level}" />
                <parameter name="@message" layout="${message:tostring}" />
                <parameter name="@Exception" layout="${exception:tostring}" />
            </target>

        </targets>

        <!--规则配置,final -最终规则匹配后不处理任何规则-->
        <!--定义使用那个target输出-->
        <rules>
            <!--优先级从高到低以此为:OFF/FATAL/ERROR/WARN/INFO/DEBUG/TRACE/ALL-->
            <!--将日志输出到文件-->
            <logger name="*" minlevel="Debug" writeTo="info_file"/>
            <logger name="*" minlevel="Warn" writeTo="error_file"/>
            <!-- 将所有日志输出到控制台  -->
            <logger name="*" minlevel="Debug" writeTo="colorConsole" />
            
            <!--将日志输出给数据库-->
            <logger name="*" minlevel="Debug" writeTo="databaseTarget" />
        </rules>
    </nlog>
</configuration>

 

 

出现相关文件解决

1.Nuget找不到任何文件

2.数据库写入报1252

  1. 问题原因
    • 在一些情况下,System.Text.Encoding.CodePages可能由于项目配置或 NuGet 包引用问题而无法找到。这可能是因为没有正确安装包含该命名空间的相关包,或者项目没有正确配置来使用这个组件。
  2. 解决方案
    • 安装 System.Text.Encoding.CodePages 包(如果适用)
      • 在某些.NET 版本中,System.Text.Encoding.CodePages是作为一个单独的 NuGet 包提供的。你可以通过以下步骤安装它:
      • 打开 Visual Studio,在解决方案资源管理器中右键单击你的项目,选择 “管理 NuGet 包”。
      • 在 “浏览” 选项卡中,搜索 “System.Text.Encoding.CodePages”。
      • 找到对应的包后,点击 “安装” 按钮,将其添加到你的项目中。
    • 检查.NET 版本和引用
      • 在.NET Core 和.NET 5 + 项目中,System.Text.Encoding.CodePages通常是作为System.Text.Encoding命名空间的一部分包含在内的。如果你的项目是基于这些较新的.NET 版本,可能是项目引用出现了问题。
      • 你可以尝试重新构建项目,确保所有的引用都正确解析。在 Visual Studio 中,可以通过 “生成” 菜单中的 “重新生成解决方案” 选项来执行此操作。
    • 在代码中注册编码提供程序(如果需要)
      • 有时候,即使包已经安装,你还需要在代码中显式地注册编码提供程序,以便能够使用特定的编码。例如:

      收起 csharp  
      System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
      

      • 这段代码应该在使用相关编码之前执行,它会注册编码提供程序,使得你可以使用例如CodePage编码等。例如,在读取使用特定代码页编码的文件时,这个步骤是很重要的。

 

通过以上步骤,应该可以解决在项目中找不到System.Text.Encoding.CodePages的问题 3.数据库写入中文??? 在数据库连接是增加字符指定:CharSet=utf8;

标签:编码,Encoding,Text,写入,System,Nlog,MySql,NET,CodePages
From: https://www.cnblogs.com/magicinsist/p/18665204

相关文章

  • 【MySQL】第五章 数据类型
    系列文章目录《【MySQL】第一章MySQL5.7的安装与卸载》《【MySQL】第二章初识数据库》《【MySQL】第三章库的操作》《【MySQL】第四章表的操作》《【MySQL】第五章数据类型》文章目录系列文章目录环境准备数据类型分类数值类型数值类型分类整数类型浮点数FL......
  • MySQL索引原理及慢查询优化13
    背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等......
  • MySQL 学习指南与资料分享
    MySQL学习资料https://pan.quark.cn/s/4102ccd1336dMySQL学习资料https://pan.quark.cn/s/4102ccd1336dMySQL学习资料https://pan.quark.cn/s/4102ccd1336d在如今数据驱动发展的大趋势下,MySQL作为开源关系型数据库管理系统的佼佼者,广泛应用于各个领域,从个人博客搭建到......
  • 【MySQL8】压缩包方式卸载
    版本:v8.0.26今天mysql启动的时候报错,跟着网上的教程排查了几次,最后决定卸了重装,反正是学习环境备份数据(可选)如果是生产环境/开发环境,第一步是备份数据,我不备份你可以选择更简单的方式:复制data文件夹,但是版本兼容性很差,会出现各种毛病,导致数据无法展示也无法恢复,不推荐我......
  • 【CentOS7】安装MySQL
    检查是否安装过MySQL检查是否用yum安装过mysqlyumlistinstalled|grep-imysql检查是否用过rpm安装过mysqlrpm-qa|grep-imysql检查有没有mysql服务开启systemctlstatusmysqld.service卸载MySQL(可选)1.关闭mysql服务systemctlstopmysqld.service2.......
  • MySQL 安装部署
    概述本文主要介绍如何在Linux中以RPM包的方式安装MySQL并进行相关的初始化配置,文中方案均已实践验证。操作系统CentOS7.6数据库版本MySQL8.4.3LTS[!NOTE]说明本文主要介绍RPM包的安装方式,其他安装方法可查阅官网:MySQL::MySQL8.4ReferenceManua......
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+MySQL SSM 超市外卖系统小程序
     摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,超市外卖系统小程序被用户普遍使用,为方便用户能够可以随时进行超市外卖系统小程序的数据信息管理,特开发了基于微信小程......
  • (免费送源码)计算机毕业设计原创定制:Java+ssm+MySQL SSM母婴用品交流系统
     摘  要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。母婴用品交流系统,主要的模块包括查看首页、轮播图管理、通知公告管理、资源管理(母婴资讯、资讯分类)、交流管理(交流论坛、论坛分类)、用户管理(管理员、普......
  • 05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
    Docker学习,常用安装:Mysql、Redis、Nginx、Nacos一、Docker安装Mysql1、dockersearchmysql ##查找mysql版本都有哪些2、dockerpullmysql:5.6 ##下载5.6版本的mysql镜像3、dockerrun-p13306:3306--namemysql ##运行镜像生成容器-v/opt......
  • Ubuntu安装MySQL-5.7.44
    一、下载MySQL::DownloadMySQLCommunityServer(ArchivedVersions) MySQL::MySQLDownloads 下滑 二、卸载ubuntu18.04彻底卸载mysql5.7,图文详解_ubuntu卸载mysql-CSDN博客1、查看MySQL的依赖项dpkg--list|grepmysql2、删除所有MySQL工作......