簡體   English   中英

Serilog on.Net 6 web API

[英]Serilog on .Net 6 web API

我正在 .Net 6 上做我的第一個項目,一個 web API。希望有 Serilog,保存日志,然后保存到 GreyLog。 我面臨一些問題,因為我是 .Net 6 的新手

當我將它添加到 program.cs 時,如

string logFileName = "scp_.log"; // mapping?
var logger = new LoggerConfiguration()
   .WriteTo.File(
       path: logFileName,
       retainedFileCountLimit: 7,
       shared: true,
       rollingInterval: RollingInterval.Day,
       rollOnFileSizeLimit: true,
       fileSizeLimitBytes: 123456,
       flushToDiskInterval: TimeSpan.FromSeconds(5))
     .CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(logger);

然后它僅適用於系統。 我想要一個自己的日志,我可以在 controller 中創建它。我希望創建它一次,它就會在我所有的控制器中。

在 program.cs 中創建時,它不適用於控制器或任何東西。 有沒有一種簡單的方法可以讓所有東西都有一個?

我如何將 map 路徑設置為我在 .Net Framework 中使用的路徑? 像這樣

     string logFileName = HostingEnvironment.MapPath(@"~/old_project_.log");

我可以用這個:

public AdminController(ILogger<AdminController> logger, IWebHostEnvironment host)
{
   string logfile = Path.Combine(host.ContentRootPath, "scp_.log");

通過手動添加IWebHostEnviroment 這與簡單地使用“scp_.log”是一樣的。 這是正確的方法嗎? 我曾經在服務器上的 bin\debug 文件夾或 api 文件夾中獲取日志文件

我還沒有服務器,因為我剛開始創建這個項目

我可以在系統中使用當前的記錄器( ILogger<AdminController> )來記錄文件,然后再記錄到 Greylog 嗎?

老實說,我認為你想多了。 我已經將 serilog 添加到幾個不同的項目中,並且我剛剛使用了 serilog repos 中的說明。 查看幾個不同的回購協議,看看適合什么:

獲得 serilog 設置真的很基本。 這是它如此受歡迎的原因之一。 該文檔在如何設置方面非常好。 它可能不完全是您所需要的,但它會為您提供進行設置的框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM