在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
控制台應用程序儘管缺乏圖形使用者介面,但通常需要穩健的日誌機制來追蹤錯誤、監控應用程式性能,並有效地調試問題。 Prism.Plugin.Logging,作為Prism Logging框架的擴展,為.NET應用程序提供了全面的日誌記錄解決方案,包括支援各種日誌記錄提供者。
在本文中,我們探討如何將 Prism Logging 集成到控制台應用程式中,使用IronPDF,強大的 .NET 庫,用於處理 PDF 文件。 通過結合這些工具,開發人員可以在他們的控制臺應用程序中實現先進的日誌功能,從而增強維護和故障排除能力。
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 控制台。 雖然每個框架的實現方式不同,但基本概念始終相同,協助我們記錄與您的應用程序相關的數據。
在 Visual Studio 應用程式中選擇「檔案」選單。 點擊「新專案」,然後選擇「控制台應用程式」。
在選定檔案位置後,在指定的文本區域輸入專案名稱。 然後,按照下面的範例所示,點擊「Create」按鈕以選擇必要的 .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)
結合Prism與IronPDF在 C# 專案中開啟了一些令人興奮的可能性。 IronPDF 是一個很棒的工具,可以將這些內容轉換為 PDF,儘管 Prism 是處理日誌的好工具。 由於此連接性,程式設計師可以創建將項目記錄到自定義設計的 PDF 文件的應用程式。
透過創建一個使用 Prism Logs 的 Windows 控制台應用程式,用戶可以在您的程式中與 Logs 互動。 此控制項應該可以輕鬆放置在控制台上,並留有充足的空間以進行記錄。 添加伺服器日誌操作和 HTTP 日誌。
選擇「工具」>「NuGet 套件管理器」>「套件管理員主控台」。
Install-Package IronPdf
安裝 IronPDF 的另一種方式是使用 NuGet 套件管理器解決方案。
請訪問 NuGet 網站的 IronPDF 頁面 https://www.nuget.org/packages/IronPdf 以瞭解更多關於 IronPDF 的功能、兼容性和其他下載選項。
或者,您可以通過使用 IronPDF 的 DLL 文件直接將其集成到您的項目中。要下載包含該 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 各種產品的資訊,請訪問他們的網站連結