首页 > 数据库 >.Net Core 8 NLog连接PostgreSQL数据库

.Net Core 8 NLog连接PostgreSQL数据库

时间:2024-12-29 09:57:06浏览次数:5  
标签:Core PostgreSQL string err void NLog msg logger public

最近在做的项目需要把日志记录到本地和数据库,我使用的是NLog,主要参考博文链接:.NET项目中NLog的配置与使用 - 追逐时光者 - 博客园,下面是NLog连接PostgreSQL数据库的步骤,网上关于NLog连接PostgreSQL数据库的实例比较少,大多数都是mysql的。

1、创建Nlog.config配置文件,将下面配置文件内容复制进去,里面包含了存储数据库和本地。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
>
	<targets>
		<target xsi:type="Database"
                name="pgsql"
                dbProvider="Npgsql.NpgsqlConnection,Npgsql"
                connectionString="database=postgres;server=localhost;port=5432;user id=postgres;password=123456;">
			<commandText>
				INSERT INTO syslog (machineName, logged, level, message,logger, callSite, exception)
				VALUES (@machineName, @logged, @level, @message, @logger, @callSite, @exception)
			</commandText>
			<parameter name="@machineName" layout="${machinename}"/>
			<parameter name="@logged" layout="${date}"/>
			<parameter name="@level" layout="${level}"/>
			<parameter name="@message" layout="${message}"/>
			<parameter name="@logger" layout="${logger}"/>
			<parameter name="@callSite" layout="${callsite}"/>
			<parameter name="@exception" layout="${exception:tostring}"/>
		</target>
		<target name="asyncFile" xsi:type="AsyncWrapper">
			<!--项目日志保存文件路径说明fileName="${basedir}/保存目录,以年月日的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"-->
			<target name="log_file" xsi:type="File"
				fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"
				layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
				archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
				archiveAboveSize="102400"
				archiveNumbering="Sequence"
				concurrentWrites="true"
				keepFileOpen="false" />
		</target>
	</targets>
	<rules>
		<logger name="*" minlevel="Info" writeTo="pgsql"/>
		<logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
		<logger name="*" minlevel="Info" writeTo="asyncFile" />
		<logger name="*" minlevel="Warn" writeTo="colorConsole" />
	</rules>
</nlog>

 2、安装nuget包

  • NLog
  • NLog.Database
  • Npgsql

3、创建LoggerHelper

 /// <summary>
 /// nLog使用帮助类
 /// </summary>
 public class LoggerHelper
 {
     /// <summary>
     /// 实例化nLog,即为获取配置文件相关信息(获取以当前正在初始化的类命名的记录器)
     /// </summary>
     private readonly NLog.Logger _logger = LogManager.GetCurrentClassLogger();

     private static LoggerHelper _obj;

     public static LoggerHelper Logger
     {
         get => _obj ?? (new LoggerHelper());
         set => _obj = value;
     }

     #region Debug,调试
     public void Debug(string msg)
     {
         _logger.Debug(msg);
     }

     public void Debug(string msg, Exception err)
     {
         _logger.Debug(err, msg);
     }
     #endregion

     #region Info,信息
     public void Info(string msg)
     {
         _logger.Info(msg);
     }

     public void Info(string msg, Exception err)
     {
         _logger.Info(err, msg);
     }
     #endregion

     #region Warn,警告
     public void Warn(string msg)
     {
         _logger.Warn(msg);
     }

     public void Warn(string msg, Exception err)
     {
         _logger.Warn(err, msg);
     }
     #endregion

     #region Trace,追踪
     public void Trace(string msg)
     {
         _logger.Trace(msg);
     }

     public void Trace(string msg, Exception err)
     {
         _logger.Trace(err, msg);
     }
     #endregion

     #region Error,错误
     public void Error(string msg)
     {
         _logger.Error(msg);
     }

     public void Error(string msg, Exception err)
     {
         _logger.Error(err, msg);
     }
     #endregion

     #region Fatal,致命错误
     public void Fatal(string msg)
     {
         _logger.Fatal(msg);
     }

     public void Fatal(string msg, Exception err)
     {
         _logger.Fatal(err, msg);
     }
     #endregion

4、生成日志记录表

CREATE TABLE public.syslog (
	machinename varchar(50) NOT NULL,
	"logged" varchar(50) NOT NULL,
	"level" varchar(50) NOT NULL,
	message text NOT NULL,
	logger varchar(250) NULL,
	callsite text NULL,
	"exception" text NULL
);

5、在你需要记录日志的地方调用

LoggerHelper.Info("测试")

  

标签:Core,PostgreSQL,string,err,void,NLog,msg,logger,public
From: https://www.cnblogs.com/cplmlm/p/18620252

相关文章

  • THU-rCore 操作系统实验踩坑日寄-1
    rCore是清华大学操作系统实验uCore之rust版本。不得不说能在本科阶段提供这种高质量的操作系统实验课程,并且还是一次提供两种语言的选择确实很厉害。出于“学习一门语言的最好方法就是用这个语言做一个项目”的想法,这次就选了rCore作为学习rust的桥梁。在做rCore之前,提前刷了一部......
  • ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路
    前言前面的几篇文章讲了很多JWT的优点,但作为技术人员都知道,没有一种技术是万能的"银弹",所谓有矛就有盾,相比Session、Cookie等传统的身份验证方式,JWT在拥有很多优点的同时,也有着不可忽视的缺点,比如:JWT的缺点无法撤销一旦JWT被发放给客户端,在有效期内这个Token就一......
  • PostgreSQL 初始化配置设置
    title:PostgreSQL初始化配置设置date:2024/12/27updated:2024/12/27author:cmdragonexcerpt:PostgreSQL是一款广泛应用于企业级应用、数据仓库以及Web应用程序的强大数据库管理系统。在完成数据库的安装后,进行合理而有效的初始配置是确保数据库性能和安全性的......
  • 在不同操作系统上安装 PostgreSQL
    title:在不同操作系统上安装PostgreSQLdate:2024/12/26updated:2024/12/26author:cmdragonexcerpt:PostgreSQL是当今最受欢迎的开源关系数据库管理系统之一,由于其强大的功能和灵活性,广泛应用于不同的行业和应用场景。在开始使用PostgreSQL之前,用户需要了解......
  • asp.net core webapi 向前端返回一个文件
    后端接口返回文件[Authorization]//给下载模版添加权限[HttpGet]publicIActionResultDownloadTemplate(){//AppContext.BaseDirectory用于获取项目根目录varfilePath=$"{AppContext.BaseDirectory}/MyStaticFiles/取货模板.csv";if(!System.IO.File.E......
  • ASP.NET Core 中的速率限制中间件的使用
    简介在ASP.NETCore中,速率限制中间件是用来控制客户端对WebAPI或MVC应用程序发出请求的速率,以防止服务器过载和提高安全性。下面是AddRateLimiter的一些基本用法:1.注册服务在Startup.cs或Program.cs中,需要注册AddRateLimiter服务。这可以通过以下代码完成:builder.S......
  • windows 系统安装 PostgreSQL15
    windows系统安装PostgreSQL15一:下载安装包,下载地址postgresql-15.4-1-windows-x64.exehttps://www.enterprisedb.com/downloads/postgres-postgresql-downloads二:安装,以管理员身份运行出现安装界面,点击Next 三:选择安装路径,点击Next 四:选择组件(默认都勾选),点击Next......
  • hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放而导致
    如题https://github.com/sergezhigunov/Hangfire.EntityFrameworkCore/issues/32publicclassWorker:IBackgroundProcess{publicvoidExecute(BackgroundProcessContextcontext){using(varfetchedJob=connection.FetchNextJob(_queues.ToArray(),context.......
  • 在不同操作系统上安装 PostgreSQL
    title:在不同操作系统上安装PostgreSQLdate:2024/12/26updated:2024/12/26author:cmdragonexcerpt:PostgreSQL是当今最受欢迎的开源关系数据库管理系统之一,由于其强大的功能和灵活性,广泛应用于不同的行业和应用场景。在开始使用PostgreSQL之前,用户需要了解如何在......
  • TMS WEB Core Crack,Key Features of TMS WEB Core
    TMSWEBCoreCrack,KeyFeaturesofTMSWEBCoreTMSWEBCoreisconsideredidealforproducingmodernwebsoftwareforusersanddevelopers.DiscoveringtheunlimitedpossibilitiesoftheapplicationsalongwithdevelopmentwiththeuseoftheTMS......