Ang*_*ker 4 .net c# serilog .net-core
我使用 Visual Studio 和集成的 Serilog 创建了一个新的 .NET Core Web 项目。它从 appsettings.json(通过.UseSerilog((ctx, config) => { config.ReadFrom.Configuration(ctx.Configuration); }))读取设置。
在 appsettings.json 中,写入日志的路径指定为Serilog/WriteTo/Args/pathFormat。如果我将该值设置为log.txt,它将尝试将文件写入`c:\program files\iisexpress\log.txt'。
我怎样才能让它写入我的网络应用程序的内容根目录?
Nic*_*rdt 10
理想情况下,您不希望将日志文件写入 Web 应用程序的内容根目录,因为这些文件最终可以通过 Web 访问,这将是一个严重的安全问题。
日志文件路径配置可以包含环境变量,因此类似%TMP%\log.txt,或基于%LOCALAPPDATA%等的路径是一个不错的选择(只要网站的工作进程有权写入该位置)。
您可以通过在设置记录器之前更改当前目录来写入相对于您的 Web 应用程序的路径:
Environment.CurrentDirectory = AppContext.BaseDirectory;
Run Code Online (Sandbox Code Playgroud)
或者,您可以结合这些方法并设置您自己的环境变量来执行此操作:
Environment.SetEnvironmentVariable("BASEDIR", AppContext.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)
因此,以下配置:
"%BASEDIR%\logs\log.txt"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6027 次 |
| 最近记录: |