??讀完這篇文章里你能收獲到
- 如何在Docker中部署 SEQ:介紹了如何創(chuàng)建和運(yùn)行 SEQ 容器,給出了詳細(xì)的執(zhí)行操作
- 如何使用 NLog 接入 .NET Core 應(yīng)用程序的日志:詳細(xì)介紹了 NLog 和 NLog.Seq 來配置和記錄日志的步驟
- 日志記錄示例:博客提供了一個簡單的日志記錄示例,展示了如何在應(yīng)用程序中使用 NLog 記錄日志發(fā)送到SEQ
文章來源:http://www.zghlxwxcb.cn/news/detail-669155.html
摘要:本文介紹了如何使用SEQ來進(jìn)行.NET Core應(yīng)用程序的日志記錄和查詢。首先,我們將了解SEQ的基本概念和功能。然后,我們會詳細(xì)說明如何在.NET Core應(yīng)用程序中配置和部署SEQ,并通過示例代碼演示如何實現(xiàn)日志記錄和查詢。
一、簡介
SEQ是一款功能強(qiáng)大的日志管理工具,它提供了易于使用的Web界面和靈活的查詢語法,幫助開發(fā)人員更好地理解和分析應(yīng)用程序的日志信息。在本文中,我們將使用SEQ來記錄和查詢.NET Core應(yīng)用程序的日志。
二、SEQ部署
1. 下載SEQ Docker鏡像
sudo docker pull datalust/seq:latest
2. 生成SEQ密碼
PH=$(echo 'password' |sudo docker run --rm -i datalust/seq config hash)
3. 創(chuàng)建SEQ容器
sudo mkdir -p data/logs
sudo docker run \
--name seq \
-d \
--restart unless-stopped \
-e ACCEPT_EULA=Y \
-e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \
-v /data/log-prod:/data \
-p 8001:80 \
-p 5341:5341 \
--memory=16g \
--memory-swap=16g \
datalust/seq
上面的docker運(yùn)行腳本中有幾個點需要注意的:
- Seq存儲的數(shù)據(jù)包括元數(shù)據(jù)和事件數(shù)據(jù),元數(shù)據(jù)指用戶信息、Seq配置等數(shù)據(jù),事件數(shù)據(jù)指收集到的日志數(shù)據(jù)。這兩種數(shù)據(jù)默認(rèn)都是直接存儲在磁盤上的,所以在容器啟動時,需要將數(shù)據(jù)存儲的路徑映射到宿主機(jī)上。事件數(shù)據(jù)只能存儲在磁盤上,而元數(shù)據(jù)有需要的話可以存儲到sqlserver或者postgresql,可以在容器啟動之后進(jìn)入容器對元數(shù)據(jù)進(jìn)行遷移,可以在容器啟動時通過環(huán)境變量的方式指定存儲路徑,如下:
-e SEQ_METASTORE_POSTGRES_CONNECTIONSTRING="Host=localhost;Port=5432;Database=seq"
- Seq實例在不指定最大內(nèi)存的情況下會盡可能的占用宿主機(jī)盡可能多的內(nèi)存,為了保證實例能夠穩(wěn)定運(yùn)行,不會因為內(nèi)存問題退出或者被殺掉,也為了不影響其他應(yīng)用,可以為seq實例設(shè)置可用的最大內(nèi)存,而通過seq提供的環(huán)境變量SEQ_CACHE_SYSTEMRAMTARGET可以配置seq是否使用緩存,在為seq容器分配的內(nèi)存比較少的情況下,可以不適應(yīng)緩存。
4. 訪問SEQ Web界面
SEQ容器啟動后,打開瀏覽器并輸入http://localhost:8001,即可進(jìn)入SEQ的Web界面。
5. 創(chuàng)建日志源APP Key
在SEQ的Web界面中,我們需要為每個應(yīng)用程序創(chuàng)建一個獨立的日志源。通過點擊界面右上角的"Add +"按鈕,可以創(chuàng)建一個新的日志源,并記錄下該日志源的API密鑰,以便后續(xù)在.NET Core應(yīng)用程序中進(jìn)行配置。
三、.NET Core接入(NLog)
1. 添加依賴包
在.NET Core應(yīng)用程序的項目文件中,添加NLog和NLog.Seq的NuGet包引用??梢允褂靡韵旅钤陧椖课募刑砑覰uGet包引用:
dotnet add package NLog
dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Targets.Seq
2. 配置nlog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="info"
throwConfigExceptions="true">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
<add assembly="NLog.Targets.Seq"/>
</extensions>
<variable name="OwnWebLayout"
value="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}"/>
<targets async="true">
<target name="seq" xsi:type="BufferingWrapper" bufferSize="1000" flushTimeout="2000">
<target xsi:type="Seq" serverUrl="http://localhost:5341" apiKey="" >
<property name="MachineName" value="${machinename}" />
<property name="LogType" value="${event-properties:item=LogType}" />
</target>/>
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="seq" />
</rules>
</nlog>
3. 在Startup.cs文件中啟用NLog
using NLog.Extensions.Logging;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 其他配置...
// 啟用NLog
services.AddLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders();
loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
loggingBuilder.AddNLog();
});
}
}
4. 日志記錄
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index page visited");
// 應(yīng)用程序邏輯...
return View();
}
四、SEQ查詢
1. 事件查詢
在SEQ的Web界面中,可以使用簡單而強(qiáng)大的查詢語法來過濾和分析日志。例如,可以通過關(guān)鍵詞、日期范圍或其他屬性進(jìn)行過濾。以下是一些常用的查詢示例:
- 查詢包含特定關(guān)鍵詞的日志:“關(guān)鍵詞”
- 查詢特定級別的日志:@Level = “級別”
2. 看板制作
五、總結(jié)
本文介紹了如何使用SEQ來記錄和查詢.NET Core應(yīng)用程序的日志。通過部署SEQ并在.NET Core應(yīng)用程序中配置日志記錄,可以輕松地將應(yīng)用程序的日志發(fā)送到SEQ中,并使用SEQ的強(qiáng)大查詢功能對日志進(jìn)行分析和篩選。希望本文能幫助你更好地管理和利用應(yīng)用程序的日志信息。
- 附SEQ官方的文檔:https://docs.datalust.co/docs
文章來源地址http://www.zghlxwxcb.cn/news/detail-669155.html
到了這里,關(guān)于『SEQ日志』在 .NET中快速集成輕量級的分布式日志平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!