在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
控制台應用程序儘管缺乏圖形使用者介面,但通常需要穩健的日誌機制來追蹤錯誤、監控應用程式性能,並有效地調試問題。 Prism.Plugin.Logging 是 Prism Logging 框架的擴展,為 .NET 應用程序提供了全面的日誌記錄解決方案,支持各種日誌提供者。
在本文中,我們探討如何使用IronPDF,一個強大的 .NET 資料庫,用於處理 PDF 文檔,將 Prism Logging 整合到控制台應用程式中。 通過結合這些工具,開發人員可以在他們的控制臺應用程序中實現先進的日誌功能,從而增強維護和故障排除能力。
Prism.Plugin.Logging 擴展了 Prism(一個流行的構建 XAML 應用程序的框架),提供了全面的日誌記錄功能。 Prism.Plugin.Logging 支援多個記錄提供者,如 NLog、Serilog 和 Microsoft.Extensions.Logging,提供靈活性和自訂選項以滿足各種應用程式需求。
靈活的日誌配置:Prism.Plugin.Logging 允許開發人員無縫配置各種日誌提供者,包括 NLog、Serilog 和 Microsoft.Extensions.Logging 等熱門選擇。
結構化日誌支援:開發人員可以使用 Prism.Plugin.Logging 在他們的訊息中記錄結構化數據。 此功能特別在需要記錄完整上下文資料(如時間戳記、錯誤代碼或使用者活動)的控制台應用程式中非常有用,並添加至IronPDF生成的日誌報告。
建立一個新的 C# 專案
安裝 Prism 日誌記錄套件。
為 SyslogLogger 創建一個物件並將配置作為參數傳遞。
在需要時調用日誌方法,並傳遞日誌消息和日誌級別。
在 C# 專案中整合 Prism 很簡單。 使用 NuGet(Microsoft 的 .NET 套件管理器)是添加 Prism 所必需的。 此庫提供將 Prism Logs 整合到您的專案所需的工具和函式庫。
Prism 與多種 .NET 應用類型兼容,包括 Windows Forms (WinForms) 和 Windows Console。 雖然每個框架的實現方式不同,但基本概念始終相同,協助我們記錄與您的應用程序相關的數據。
在 Visual Studio 應用程式中選擇「檔案」選單。 點擊「新專案」,然後選擇「控制台應用程式」。
在選定檔案位置後,在指定的文本區域輸入專案名稱。 然後,按照下面的範例所示,點擊「Create」按鈕以選擇必要的 .NET Framework。
![Prism Logging(開發者如何使用):圖 3 - 接下來,透過指定所需的專案名稱和位置來配置您的專案。 選擇適合您專案的 .NET Framework,然後點擊「建立」按鈕。
所選應用程式將決定 Visual Studio 專案的組織方式。 只需打開 program.cs 文件即可開始向應用程式新增程式碼並進行構建。 您可以使用 Windows、控制台或網路應用程式。
之後,可以添加庫並測試代碼。
在以下的程式碼範例中,我們啟動了 prism log 物件,然後依次將不同的記錄層級添加到 Prism 記錄中,並將所有記錄和重要性保存到一個列表中。
using Prism.Logging.Syslog;
class Program
{
public class Demo
{
public string name { get; set; }
public int age { get; set; }
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
static IList<LogData> Loglst = new List<LogData>();
static async Task Main(string [] args)
{
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
PerformApplicationLogic();
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
}
static void PerformApplicationLogic()
{
// Example application logic
Console.WriteLine("Performing application logic...");
// Simulate error
try
{
throw new Exception();// This will throw an exception
}
catch (Exception ex)
{
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
}
}
static void MessageLog(string Message, Prism.Logging.Syslog.Level _level)
{
Loglst.Add(new LogData { message = Message, Level = _level.ToString() });
logger.Log(Message, _level);
}
public class LogData
{
public string message { get; set; }
public string Level { get; set; }
}
public class Options : ISyslogOptions
{
public string HostNameOrIp { get; set; }
public int? Port { get; set; }
public string AppNameOrTag { get; set; }
}
}
}
using Prism.Logging.Syslog;
class Program
{
public class Demo
{
public string name { get; set; }
public int age { get; set; }
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
static IList<LogData> Loglst = new List<LogData>();
static async Task Main(string [] args)
{
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
PerformApplicationLogic();
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information);
}
static void PerformApplicationLogic()
{
// Example application logic
Console.WriteLine("Performing application logic...");
// Simulate error
try
{
throw new Exception();// This will throw an exception
}
catch (Exception ex)
{
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error);
}
}
static void MessageLog(string Message, Prism.Logging.Syslog.Level _level)
{
Loglst.Add(new LogData { message = Message, Level = _level.ToString() });
logger.Log(Message, _level);
}
public class LogData
{
public string message { get; set; }
public string Level { get; set; }
}
public class Options : ISyslogOptions
{
public string HostNameOrIp { get; set; }
public int? Port { get; set; }
public string AppNameOrTag { get; set; }
}
}
}
Imports Prism.Logging.Syslog
Friend Class Program
Public Class Demo
Public Property name() As String
Public Property age() As Integer
Private Shared genOptions As New Options With {
.HostNameOrIp = "127.0.0.1",
.Port = 514,
.AppNameOrTag = "LoggingDemo"
}
Private Shared logger As New SyslogLogger(genOptions)
Private Shared Loglst As IList(Of LogData) = New List(Of LogData)()
Shared Async Function Main(ByVal args() As String) As Task
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information)
PerformApplicationLogic()
MessageLog("Application started.", Prism.Logging.Syslog.Level.Information)
End Function
Private Shared Sub PerformApplicationLogic()
' Example application logic
Console.WriteLine("Performing application logic...")
' Simulate error
Try
Throw New Exception() ' This will throw an exception
Catch ex As Exception
MessageLog($"Error occurred: {ex.Message}", Prism.Logging.Syslog.Level.Error)
End Try
End Sub
Private Shared Sub MessageLog(ByVal Message As String, ByVal _level As Prism.Logging.Syslog.Level)
Loglst.Add(New LogData With {
.message = Message,
.Level = _level.ToString()
})
logger.Log(Message, _level)
End Sub
Public Class LogData
Public Property message() As String
Public Property Level() As String
End Class
Public Class Options
Implements ISyslogOptions
Public Property HostNameOrIp() As String
Public Property Port() As Integer?
Public Property AppNameOrTag() As String
End Class
End Class
End Class
日誌報告由 Prism Logging 生成。 我們正在使用一個名為 Kiwi Syslog Service Manager 的工具來監控 prism 日誌。
Prism.Plugin.Prism 的日誌功能透過 logging 擴展,提供了更多的功能性和靈活性。 它提供多種配置選項來調整日誌級別、日誌目標和其他變數,以滿足您的應用程式的日誌記錄需求。
使用 Prism.Plugin.Logging,您可以將日誌訊息路由到各種位置,包括控制台、文件、資料庫和其他日誌服務。 由於這種彈性,您可以根據應用程式的需求和環境選擇最佳的日誌記錄目標。
使用該插件,您可以實作 Prism 的 ILoggerFacade 介面來構建自定義日誌記錄器。 這讓您可以根據應用程式的需求構建自定義日誌功能,或與第三方日誌框架進行介接。
只需幾行程式碼即可輕鬆創建Prism日誌。 以下是創建日誌的範例。
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log(Message, _level);
static Options genOptions = new Options
{
HostNameOrIp = "127.0.0.1",
Port = 514,
AppNameOrTag = "LoggingDemo"
};
static SyslogLogger logger = new SyslogLogger(genOptions);
logger.Log(Message, _level);
Private Shared genOptions As New Options With {
.HostNameOrIp = "127.0.0.1",
.Port = 514,
.AppNameOrTag = "LoggingDemo"
}
Private Shared logger As New SyslogLogger(genOptions)
logger.Log(Message, _level)
在 C# 項目中結合 Prism 和 IronPDF 打開了一些令人興奮的可能性。 IronPDF 是一個很棒的工具,可以將這些內容轉換為 PDF,儘管 Prism 是處理日誌的好工具。 由於此連接性,程式設計師可以創建將項目記錄到自定義設計的 PDF 文件的應用程式。
透過創建一個使用 Prism Logs 的 Windows 控制台應用程式,用戶可以在您的程式中與 Logs 互動。 此控制項應該可以輕鬆放置在控制台上,並留有充足的空間以進行記錄。 添加伺服器日誌操作和 HTTP 日誌。
選擇「工具」>「NuGet 套件管理器」>「套件管理員主控台」。
Install-Package IronPdf
Install-Package IronPdf
安裝 IronPDF 的另一種方式是使用 NuGet 套件管理器解決方案。
請訪問 NuGet 網站的 IronPDF 頁面 https://www.nuget.org/packages/IronPdf 以瞭解更多關於 IronPDF 的功能、兼容性和其他下載選項。
或者,您可以使用其 DLL 文件將 IronPDF 直接整合到您的專案中。要下載包含 DLL 的 ZIP 文件,請點擊此連結。 一旦解壓縮後,將 DLL 包含到您的專案中。
建立 PDF 日誌報告: 在執行應用程式邏輯之後,軟體根據記錄的訊息建立 HTML 文件。 然後,它使用 IronPDF 的RenderHtmlAsPdf()功能將 HTML 文件轉換為 PDF 報告的日誌文件。 然後將 PDF 檔案儲存至磁碟。
擴展先前定義的程式碼以整合IronPDF程式碼:
using IronPdf;
static void GeneratePdfLogReport(ChromePdfRenderer Renderer)
{
var Renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer
// Generate HTML content for PDF report
string htmlContent = "<h1>Log Report</h1><ul>";
foreach (var log in Loglst)
{
htmlContent += $"<li><strong>{log.message}:</strong> {log.Level}</li>";
}
htmlContent += "</ul>";
// Generate PDF document
var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent);
// Save PDF file
string filePath = "log_report.pdf";
pdfDocument.SaveAs(filePath);
Console.WriteLine($"PDF log report generated: {filePath}");
}
using IronPdf;
static void GeneratePdfLogReport(ChromePdfRenderer Renderer)
{
var Renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer
// Generate HTML content for PDF report
string htmlContent = "<h1>Log Report</h1><ul>";
foreach (var log in Loglst)
{
htmlContent += $"<li><strong>{log.message}:</strong> {log.Level}</li>";
}
htmlContent += "</ul>";
// Generate PDF document
var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent);
// Save PDF file
string filePath = "log_report.pdf";
pdfDocument.SaveAs(filePath);
Console.WriteLine($"PDF log report generated: {filePath}");
}
Imports IronPdf
Shared Sub GeneratePdfLogReport(ByVal Renderer As ChromePdfRenderer)
Dim Renderer = New ChromePdfRenderer() ' Instantiates Chrome Renderer
' Generate HTML content for PDF report
Dim htmlContent As String = "<h1>Log Report</h1><ul>"
For Each log In Loglst
htmlContent &= $"<li><strong>{log.message}:</strong> {log.Level}</li>"
Next log
htmlContent &= "</ul>"
' Generate PDF document
Dim pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent)
' Save PDF file
Dim filePath As String = "log_report.pdf"
pdfDocument.SaveAs(filePath)
Console.WriteLine($"PDF log report generated: {filePath}")
End Sub
以下是由 IronPDF 生成的圖像日誌報告
若要了解更多關於IronPDF代碼參考的內容,請參閱此處。
Prism.Plugin.Logging 與 IronPDF 的整合可讓開發者輕鬆將廣泛的日誌功能整合至終端應用程式中。開發者可以藉由利用這兩個工具的功能來改善整體程式維護、優化除錯能力,並加速日誌記錄操作。 Prism.Plugin.Logging 使控制台應用程式能夠獲得完整的日誌覆蓋,確保穩健的監控和故障排除功能,前提是正確的實施和設置。
IronPDF 提供一個 $749 Lite 套裝的永久許可,包含永久許可證、一年的軟體維護以及程式庫的升級。 IronPDF 提供免費的開發許可,但受時間和重發限制。 要獲取免費試用。 要了解有關 Iron Software 各種產品的更多信息,請訪問他們的網站連結。