我正在使用Serilog编写日志(log),我的配置如下所示:

Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .Enrich.FromLogContext()
        .WriteTo.Async(c => c.File($"Logs/log-.txt", rollingInterval: RollingInterval.Day))
        .WriteTo.Async(c => c.Console())
        .CreateLogger();

这样做的问题是将日志(log)写入bin/DEBUG/.net7/Logs

但我希望它将日志(log)写入项目中名为Logs的文件夹中.

这种方法在API项目中运行良好,但当我try 在我的单元测试项目中使用它时,它会将其记录在bin/DEBUG/.net7/Logs中

我怎样才能改变它,使它在我在单元测试项目的根目录下创建的文件夹中写入日志(log)?

推荐答案

您可以判断是否附加了调试器(使用System.Diagnostics命名空间):

string logPath = Debugger.IsAttached
    ? @"..\..\..\Logs\log-.txt"
    : @"Logs\log-.txt";
Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .Enrich.FromLogContext()
        .WriteTo.Async(c => c.File(logPath, rollingInterval: RollingInterval.Day))
        .WriteTo.Async(c => c.Console())
        .CreateLogger();

3..\上移了与bin/debug/.net7对应的3个文件夹.

Csharp相关问答推荐

如何使用FastEndpoints和.NET 8 WebAppliationBuilder进行集成测试?

更改对象的旋转方向

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

始终保留数组中的最后N个值,丢弃最老的

在FilePath中搜索一个词,并根据First Match从左到右提取文件路径

应用程序启动器,可 Select 物理屏幕

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

WinForms在Linux上的JetBrains Rider中的应用

如何注册类使用多级继承与接口

为什么C#认为这个非托管 struct 有一个重叠

Polly重试URL复制值

C#自定义验证属性未触发IsValid方法

使用ASP.NET MVC for Lemon Squeezy X-Signature创建散列

EF Core:如何对关系属性进行建模?

我想根据姓氏按字母顺序对包含150行徽章编号、姓氏、名字、地址等的文件进行排序.e

正在try 将自定义字体添加到我的控制台应用程序

在C#中通过Matheval使用自定义公式

除非首先访问使用的终结点,否则本地API上的终结点不起作用

Avalonia MVVM数据模板

从具有泛型类型约束的类继承-Blazor