[英]Serilog logs to console, but not to file or database
我正在使用 ASP.NET 內核創建 web API,但我在讓 Serilog 工作時遇到了一些麻煩。 它將 output 到控制台罰款。 但是,當我告訴它 output 到一個文件時,它會創建一個文件,但不會在其中輸入任何日志。 當我嘗試使用 PostgreSQL 數據庫時也會發生同樣的情況。 關於什么是錯的任何想法?
appsettings.json
{
"AllowedHosts": "*",
"Serilog": {
"MinimumLevel": "Information",
"Using": [ "Serilog.Sinks.PostgreSQL" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "Serilogs\\AppLogs.log"
}
},
{
"Name": "PostgreSQL",
"Args": {
"connectionString": "Server=fake_server;Port=5432;Database=filter_endpoints;User Id=postgres;Password=fake_password;",
"tableName": "Logs",
"needAutoCreateTable": true
}
}
]
},
啟動.cs
public Startup(IConfiguration configuration)
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile("appsettings.Development.json")
.AddEnvironmentVariables();
Log.Logger = new LoggerConfiguration().
Enrich.FromLogContext().
ReadFrom.Configuration(configuration).
CreateLogger();
Configuration = configurationBuilder.Build();
}
編輯我讓它與文件一起工作。 顯然,我有第二個配置代碼塊,例如 Program.cs 中的 Startup.cs 中的代碼。 我把它拿出來,它現在正對着文件。
不過,我仍然無法讓它與數據庫一起使用。 我將其添加到示例代碼中。 為了安全起見,我用示例值替換了連接字符串中的一些值。 我知道連接字符串很好,因為創建了數據庫表。
編輯我終於讓它工作了。 我的代碼確實有一點問題。 我相信我應該在郵件 PostgreSQL package 之上使用 Serilog.Syncs.PostgrSQL.Configuration package。 我不確定這是否是一個貢獻因素。
主要問題是由於某種原因,同步不適用於最新版本的 NpgSQL(我在同步的 Github 問題中發現了這一點)。 我現在降級了 NpgSQL。 希望他們能盡快解決這個問題。
感謝所有試圖幫助我的人。
您是否嘗試過告訴 Serilog 它應該使用哪些接收器? :-)
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
來自 Serilog 文檔: https://github.com/serilog/serilog-settings-configuration#serilogsettingsconfiguration--
我終於讓這個工作了。 我的代碼確實有一點問題。 我相信我應該在郵件 PostgreSQL package 之上使用 Serilog.Syncs.PostgrSQL.Configuration package。 我不確定這是否是一個貢獻因素。
主要問題是由於某種原因,同步不適用於最新版本的 NpgSQL(我在同步的 Github 問題中發現了這一點)。 我現在降級了 NpgSQL。 希望他們能盡快解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.