首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从appsettings.json中正确拉取NLog DB ConnectionString

在ASP.NET Core应用程序中,appsettings.json文件通常用于存储配置信息,包括数据库连接字符串。NLog是一个流行的日志框架,可以与ASP.NET Core集成,以便将日志记录到数据库中。以下是如何从appsettings.json中正确拉取NLog DB ConnectionString的步骤:

基础概念

  1. appsettings.json: 这是ASP.NET Core项目的默认配置文件,用于存储应用程序的配置设置。
  2. NLog: 一个灵活的日志记录框架,支持多种目标(如文件、数据库、网络等)。
  3. ConnectionString: 数据库连接字符串,用于指定如何连接到数据库。

相关优势

  • 集中管理配置: 使用appsettings.json可以集中管理所有配置,便于维护和更新。
  • 安全性: 可以通过环境变量或加密方式保护敏感信息,如数据库连接字符串。
  • 灵活性: NLog支持多种日志记录目标,易于扩展和定制。

类型与应用场景

  • 类型: 数据库连接字符串通常包括服务器地址、数据库名称、用户名和密码等信息。
  • 应用场景: 在需要将日志记录到数据库的应用程序中使用,如Web应用、后台服务等。

示例代码

假设你的appsettings.json文件内容如下:

代码语言:txt
复制
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "NLogDBConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  }
}

步骤1: 在Startup.cs中配置NLog

在你的Startup.cs文件中,配置NLog以使用从appsettings.json中读取的连接字符串。

代码语言:txt
复制
public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // 其他服务配置...

        // 配置NLog
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.AddNLog(new NLogProviderOptions
            {
                CaptureMessageTemplates = true,
                CaptureMessageProperties = true
            });
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        // 配置NLog
        var nlogConfig = new NLogLoggingConfiguration(Configuration.GetSection("NLog"));
        loggerFactory.AddNLog(nlogConfig);

        // 其他中间件配置...
    }
}

步骤2: 创建NLog配置文件

创建一个nlog.config文件,并在其中指定数据库目标。

代码语言:txt
复制
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwConfigExceptions="true">

  <targets>
    <target name="database" xsi:type="Database" 
            dbProvider="System.Data.SqlClient" 
            connectionString="${configsetting:name=ConnectionStrings.NLogDBConnectionString}" 
            commandText="INSERT INTO Logs (Level, Message, Timestamp) VALUES (@Level, @Message, @Timestamp)">
      <parameter name="@Level" layout="${level}" />
      <parameter name="@Message" layout="${message}" />
      <parameter name="@Timestamp" layout="${date:format=yyyy-MM-dd HH\:mm\:ss}" />
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="database" />
  </rules>
</nlog>

常见问题及解决方法

问题1: 连接字符串未正确读取

原因: 可能是由于配置文件路径错误或配置项名称拼写错误。

解决方法: 确保appsettings.json文件位于项目根目录,并且配置项名称与代码中引用的名称完全一致。

问题2: 数据库连接失败

原因: 可能是由于连接字符串中的服务器地址、数据库名称、用户名或密码不正确。

解决方法: 检查并确认所有连接字符串参数的正确性,确保数据库服务可用且网络连接正常。

通过以上步骤和配置,你可以正确地从appsettings.json中拉取NLog DB ConnectionString,并将其用于日志记录到数据库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB

Windows 上进行 MongoDB 的安装与配置,如何在 Linux or Docker 中进行安装配置,我将在后面的文章中进行演示。...在 MongoDB 之前的版本中,如果我们需要将 MongoDB Server 作为 Windows 服务,需要我们在安装完成之后进行配置,但是从 MongoDB 4.0 开始,我们就可以在安装期间直接配置和启动我们的...NLog 和 NLog.Web.AspNetCore 为 ASP.NET Core 添加了对于 NLog 的平台支持,在 NLog 中,我们可以通过继承 NLog.Targets.TargetWithLayout...name="mongo" databaseName="GrapefruitVuCore" collectionName="Logs" connectionString...服务 }   另外,在 appsettings.json 中指定的 Logging 配置会覆盖任何对于 SetMinimumLevel 方法的调用。

1.7K10
  • 从头编写 asp.net core 2.0 web api 基础框架 (3)

    Log到Debug窗口或者Console窗口还是比较方便的,但是正式生产环境中这肯定不够用。 正式环境应该Log到文件或者数据库。...我们就用比较火的NLog吧。 NLog 首先通过nuget安装Nlog:  ? 注意要勾上include prerelease,目前还不是正式版。 装完之后,我们就需要为Nlog添加配置文件了。...默认情况下Nlog会在根目录寻找一个叫做nlog.config的文件作为配置文件。那么我们就手动改添加一个nlog.config: appSettings.json文件,asp.net core 2.0已经做好了相关配置,它默认会从ContentRoot去找appSettings.json文件。...,根据json文件中的层次结构,第一层对象我们取的是mailSettings,然后试mailToAddress和mailFromAddress,他们之间用冒号分开,表示它们的层次结构。

    1.6K70

    生成数据库

    Nlog了。...Dto是与外界打交道的Model,entity则不一样,有一些Dto的计算属性我们并不像保存在数据库中,所以entity中没有这些属性;而数据从entity传递到Dto后某些属性也会和数据库里面的形式不一样...它是: 如何安全的保存敏感的配置数据,例如:连接字符串 保存连接字符串,你可能会想到appSettings.json,但这不是一个好的想法。...我们可以这样做,首先针对开发环境(development environment)把C#代码中的连接字符串拿掉,把它放到appSettings.json里面。...生产环境: 在项目的属性--Debug里面,我们看到了环境变量: 而这个环境变量,我们可以在程序中读取出来,所以可以在这里添加连接字符串: 注意它的key,要和appSettings.json里面的整体结构一致

    1K20

    .NET 使用NLog增强日志输出

    NLog 日志组件的使用 那在实际使用中如何集成呢?接下来以ASP.NET Core 应用为例进行详细讲解。...添加NLog 配置文件:官方提供两种方式用来添加配置,一种是添加nlog.config文件使用xml格式进行配置,一种是直接在appsettings.json文件中使用json格式进行配置,这里推荐使用...在appsettings.json中添加NLog配置节点,如下所示,该配置将Info及以上级别的日志输出到控制台,将Debug及以上级别的日志输出到App_Data/Logs目录。...预置的{processname}字段获取,env字段是通过{environment}从指定的环境变量获取,以aspnet-为前缀的字段则是通过NLog.Web.AspNetCore中预置的字段中获取,因此...,还有很多其他字段,比如从配置文件读取字段,从应用读取身份信息,提取请求数据包,读取请求头,截取QueryString中的指定字段。

    2.8K20

    张高兴的 .NET IoT 入门指南:(七)制作一个气象站

    ; Iot.Device.Bindings NuGet 包的使用; 时序数据库 TimescaleDB 的简单使用; Quartz 定时任务的使用; 在控制台应用中进行依赖注入; 使用 Docker 拉取镜像...拉取 TimescaleDB 镜像: docker pull timescale/timescaledb:latest-pg14 创建卷,用于持久化数据库数据: docker volume create...appsettings.json 文件中读取。...配置文件 在 appsettings.json 中添加如下内容: { // 数据库连接字符串 "ConnectionString": "Server=localhost;Port=54321;...* 出现的部分表示任意值都会触发定时任务,/ 左侧表示触发的起始时间,右侧表示触发间隔,以 appsettings.json 中的为例,表示从每小时的第 0 分开始触发,每一分钟触发一次。

    79110

    在Docker中的部署以及docker-compose的使用

    三、Docker的几个常见命令 搜索远程存储库中的镜像,例如MongoDB的镜像 docker search mongo ? 拉取仓库中的镜像 docker pull mongo 列出本地镜像。...有一些设置,比如本例中的数据库连接,如果将连接字符串写在了项目中的appsettings.json中,而这个文件被“固化”到镜像中了,是不能修改的,除非重新生成镜像,非常麻烦。...appsettings.json中的配置。...这是因为在讲述IConfiguration的文章中说过,系统是先加载appsettings.json中的设置,后加载环境变量中的设置的,二者的key相同,所以最终会以环境变量中的配置为准。  ...Studio帮我们自动添加了SDK镜像的拉取、项目的编译、项目发布的过程。

    2.8K30

    .net 温故知新:【8】.NET 中的配置从xml转向json

    使用的话就引用包System.Configuration.ConfigurationManager 之后取里面的配置信息:System.Configuration.ConfigurationManager.AppSettings...["ConnectionString"] 随着技术的发展这种配置方式显得冗余复杂,如果配置项太多层级关系参数表达凌乱,在.net core开始也将配置的格式默认成了json格式,包括现在很多的其它配置也是支持的...配置提供程序使用各种配置源从键值对读取配置数据,这些配置程序稍后我们会看到,读取的配置源可以是如下这些: 设置文件,appsettings.json 环境变量 Azure Key Vault Azure...添加 "appsettings.json" 文件,由 JSON 配置提供程序识别(AddJsonFile("appsettings.json"))。...四、选项依赖注入 在控制台程序中我们引用DI注入包,然后演示下如何进行配置的注入。

    1.5K30

    多库操作2:终于实现多个数据库操作

    在上周的文章【多库操作:多个数据库的动态切换(一)】中,我们简单说了说,如何切换数据库,虽然实现了大部分的功能,但是最后也遗留了小问题,后来我和别的小伙伴讨论了下,那个小问题其实不是Bug,而是设计思路的偏差...{ /* 如果要开启多库支持, * 1、在appsettings.json 中开启MutiDBEnabled节点为true,必填 * 2、设置一个主连接的数据库...6 实现操作两个数据库效果 首先,开启多库配置: 我们测试两个数据库,一个是Sqlite主库,一个是Sqlserver从库, 从主库中,获取博客信息,从库中获取密码表信息,就是刚刚我们在上边配置的实体...(Sqlite)中,操作blogs var blogs = await _blogArticleServices.Query(d => d.bID == 1); // 从从库(Sqlserver...blogs, pwds }; } 为了做对比效果,我把这两个表,从数据库中删掉,也就是blog在从库中删掉,pwd在主库中删掉: 我们做一个动图,来看看效果: 尽管两个表在对方的数据库不存在

    2.2K40

    .NET Core 3.0 单元测试与 Asp.Net Core 3.0 集成测试

    在实践过程中,技术债务常常会存在,关键在于何时偿还,如何偿还。 ? 上图说明了随着时间的推移开发/维护难度的变化。...在单元测试中常常会提到几个概念 Stub , Mock 和 Fake ,那么在应用中我们该如何选择呢? Moq4 ,使用 Moq4 模拟我们在项目中依赖对象。...集成测试 集成测试确保应用的组件功能在包含应用的基础支持下是正确的,例如:数据库、文件系统、网络等。 新建集成测试项目。 ? 添加工具类 Utilities 。...db) { db.Addresses.RemoveRange(db.Addresses); InitializeDbForTests(db);...string projectDir = Directory.GetCurrentDirectory(); string configPath = Path.Combine(projectDir, "appsettings.json

    2.3K20

    MongoDB入门实战教程(5)

    前面我们学习了MongoDB的基本查询命令操作,作为后端开发的我们大部分场景都是在应用程序中和MongoDB进行交互,因此本篇我们来学习一下如何在ASP.NET Core中集成MongoDB。...use BookStoreDB db.CreateCollection('Books') 最后,预先插入两条测试数据: db.Books.insertMany([ {'Name':'Design Patterns...ForMember(dest => dest.CreatedDate, opt => opt.Ignore()) .ReverseMap(); } } 添加配置模型 首先,在appSettings.json...会通过构造函数从DI检索IBookStoreDatabaseSettings实例获取MongoDB连接字符串、数据库名 和 集合名。...示例github地址:https://github.com/EdisonChou/EDT.Mongo.Sample 4 总结 本文总结了如何在ASP.NET Core/ASP.NET 5应用程序中操作MongoDB

    1.2K10

    AgileConfig 轻量级配置中心 1.5 发布 - 支持多环境配置

    AgileConfig 从发布到现在,收到不少同学的 issue 说需要多环境的支持。也就是一个应用在不同的环境下可以配置不同的配置项。...这是一个非常有用的功能,就跟我们开发的时候会设置多个 appsettings.json 文件一样,比如 appsettings.development.json 、appsetting.production.json...下面介绍下如何使用多环境配置功能。 运行控制台节点 拉取最新的 latest 或者 release-1.5.0 的 docker 镜像,运行控制台节点即可支持多环境配置。...sudo docker run \ --name agile_config \ -e adminConsole=true \ -e db:provider=sqlite \ -e db:conn="Data..."DEV" "nodes": "http://localhost:5000", "name": "client1", "tag": "tag1", } } 关于升级 如果从1.4

    65520
    领券