前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在多个应用程序中共享日志配置

如何在多个应用程序中共享日志配置

作者头像
newbe36524
发布2023-08-23 16:11:10
1830
发布2023-08-23 16:11:10
举报

有的时候你有多个应用程序,它们需要使用相同的日志配置。在这种情况下,你可以将日志配置放在一个共享的位置,然后通过项目文件快速引用。方便快捷,不用重复配置。

Directory.Build.props

通过在项目文件夹中创建一个名为 Directory.Build.props 的文件,可以将配置应用于所有项目。这个文件的内容如下:

代码语言:javascript
复制
<Project>
    <ItemGroup Condition="$(MyApplication) == 'true'">
        <Content Include="..\Shared\appsettings.logging.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
            <Link>Shared\appsettings.logging.json</Link>
        </Content>
    </ItemGroup>
</Project>

我们可以将这个文件放在解决方案文件夹的根目录中,这样就可以将配置应用于所有项目。

由于我们定义了一个条件,所以我们可以通过设置 MyApplication 属性来控制是否应用这个配置。在这个例子中,我们将 MyApplication 属性设置为 true,所以我们只要在项目文件中设置这个属性,就可以应用这个配置。

项目文件

在项目文件中,我们需要设置 MyApplication 属性,然后引用 Directory.Build.props 文件。这样就可以应用 Directory.Build.props 文件中的配置了。

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <MyApplication>true</MyApplication>
    </PropertyGroup>
</Project>

appsettings.logging.json

Shared 文件夹中,我们需要创建一个名为 appsettings.logging.json 的文件,这个文件就是我们的日志配置文件。这个文件的内容如下:

代码语言:javascript
复制
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      }
    ]
  }
}

使用 appsettings.logging.json

Program.cs 文件中,我们需要将日志配置文件的路径传递给 CreateHostBuilder 方法。这样就可以使用 appsettings.logging.json 文件中的配置了。

代码语言:javascript
复制
private void LoadSharedAppSettings(WebApplicationBuilder builder)
{
    var appsettingsParts = new[] { "logging" };
    var sharedBaseDir = Path.Combine(AppContext.BaseDirectory, "Shared");
    foreach (var appsettingsPart in appsettingsParts)
    {
        builder.Configuration.AddJsonFile(Path.Combine(sharedBaseDir, $"appsettings.{appsettingsPart}.json"),
            true, true);
        builder.Configuration.AddJsonFile(
            Path.Combine(sharedBaseDir,
                $"appsettings.{appsettingsPart}.{builder.Environment.EnvironmentName}.json"),
            true, true);
    }
}

文件夹结构

最后我们看一下文件夹的结构:

代码语言:javascript
复制
├───MyApplication1
│   ├───Properties
│   └───wwwroot
├───MyApplication2
│   ├───Properties
│   └───wwwroot
├───Shared
│   └───appsettings.logging.json
└───MyApplication.sln

总结

通过在项目文件夹中创建一个名为 Directory.Build.props 的文件,可以将配置应用于所有项目。在项目文件中,我们需要设置 MyApplication 属性,然后引用 Directory.Build.props 文件。在 Program.cs 文件中,我们需要将日志配置文件的路径传递给 CreateHostBuilder 方法。这样就可以使用 appsettings.logging.json 文件中的配置了。

参考资料

本文采用 Chat OpenAI 辅助注水浇筑而成,如有雷同,完全有可能。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Directory.Build.props
  • 项目文件
  • appsettings.logging.json
  • 使用 appsettings.logging.json
  • 文件夹结构
  • 总结
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档