Apache log4net™ 功能
概述
log4net 是一款帮助程序员将日志语句输出到各种输出目标的工具。如果应用程序出现问题,启用日志记录将有助于定位问题。使用 log4net,可以在运行时启用日志记录,而无需修改应用程序二进制文件。log4net 包的设计使得日志语句可以保留在发布的代码中,而不会产生高性能成本。因此,日志记录的速度(或者更确切地说是不记录日志)至关重要。
同时,日志输出可能非常庞大,很快就会变得难以管理。log4net 的一个独特功能是分层日志记录器的概念。使用这些日志记录器,可以有选择地控制以任意粒度输出哪些日志语句。
log4net 的设计目标是速度和灵活性。
支持多个框架
log4net 为以下框架提供特定版本
- .NET Core 6 或更高版本 - 使用 netstandard-2.0
- Microsoft .NET Framework 4.6.2 或更高版本
输出到多个日志记录目标
log4net 附带以下附加程序(并非所有框架都支持)
类型 | 描述 |
---|---|
log4net.Appender.AdoNetAppender | 使用准备好的语句或存储过程将日志记录事件写入数据库。 |
log4net.Appender.AnsiColorTerminalAppender | 将颜色突出显示的日志记录事件写入 ANSI 终端窗口。 |
log4net.Appender.AspNetTraceAppender | 将日志记录事件写入 ASP 跟踪上下文。然后可以在 ASP 页面的末尾或 ASP 跟踪页面上呈现这些事件。 |
log4net.Appender.ColoredConsoleAppender | 将颜色突出显示的日志记录事件写入应用程序的 Windows 控制台。 |
log4net.Appender.ConsoleAppender | 将日志记录事件写入应用程序的控制台。这些事件可以发送到标准输出流或标准错误流。 |
log4net.Appender.DebugAppender | 将日志记录事件写入 .NET 系统。 |
log4net.Appender.EventLogAppender | 将日志记录事件写入 Windows 事件日志。 |
log4net.Appender.FileAppender | 将日志记录事件写入文件系统中的文件。 |
log4net.Appender.LocalSyslogAppender | 将日志记录事件写入本地 syslog 服务(仅限 UNIX)。 |
log4net.Appender.MemoryAppender | 将日志记录事件存储在内存缓冲区中。 |
log4net.Appender.NetSendAppender | 将日志记录事件写入 Windows Messenger 服务。这些消息将在用户终端的对话框中显示。 |
log4net.Appender.OutputDebugStringAppender | 将日志记录事件写入调试器。如果应用程序没有调试器,系统调试器将显示该字符串。如果应用程序没有调试器,并且系统调试器未处于活动状态,则该消息将被忽略。 |
log4net.Appender.RemoteSyslogAppender | 使用 UDP 网络将日志记录事件写入远程 syslog 服务。 |
log4net.Appender.RemotingAppender | 使用 .NET 远程处理将日志记录事件写入远程处理接收器。 |
log4net.Appender.RollingFileAppender | 将日志记录事件写入文件系统中的文件。RollingFileAppender 可以配置为根据日期或文件大小限制记录到多个文件。 |
log4net.Appender.SmtpAppender | 将日志记录事件发送到电子邮件地址。 |
log4net.Appender.SmtpPickupDirAppender | 将日志记录事件发送到电子邮件地址,但将电子邮件写入可配置的目录,而不是直接通过 SMTP 发送。 |
log4net.Appender.TelnetAppender | 客户端通过 Telnet 连接以接收日志记录事件。 |
log4net.Appender.TraceAppender | 将日志记录事件写入 .NET 跟踪系统。 |
log4net.Appender.UdpAppender | 使用 UdpClient 将日志记录事件作为无连接 UDP 数据报发送到远程主机或多播组。 |
特殊的 log4net.Appender.ForwardingAppender 可用于包装另一个附加程序,例如附加额外的过滤器。
分层日志记录体系结构
分层日志记录非常适合基于组件的开发。每个组件都有自己的日志记录器。在单独测试时,可以根据开发人员的要求设置这些日志记录器的属性。当与其他组件组合时,日志记录器将继承由组件集成者确定的属性。可以有选择地提高单个组件的日志记录优先级,而不会影响其他组件。当您需要从单个组件中获取详细的跟踪,而无需用来自其他组件的消息填充跟踪文件时,这非常有用。所有这些都可以通过配置文件完成;无需进行代码更改。
XML 配置
log4net 使用 XML 配置文件进行配置。配置信息可以嵌入到其他 XML 配置文件(例如应用程序的 .config 文件)中,也可以嵌入到单独的文件中。该配置易于阅读和更新,同时保留了表达所有配置的灵活性。
或者,log4net 可以通过编程方式进行配置。
动态配置
log4net 可以监视其配置文件以进行更改,并动态应用配置器所做的更改。日志记录级别、附加程序、布局以及几乎所有其他内容都可以在运行时进行调整。在许多情况下,可以诊断应用程序问题,而无需终止正在运行的进程。这对于调查已部署应用程序的问题来说是一个非常有价值的工具。
日志记录上下文
log4net 可用于以对开发人员在日志记录点透明的方式收集日志记录上下文数据。GlobalContext 和 ThreadContext 允许应用程序存储附加到日志记录消息的上下文数据。例如,在 Web 服务中,一旦调用者通过身份验证,调用者的用户名就可以存储在 ThreadContext 属性中。然后,该属性将自动作为来自同一线程的每个后续日志记录消息的一部分进行记录。