博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4net_配置
阅读量:5248 次
发布时间:2019-06-14

本文共 6804 字,大约阅读时间需要 22 分钟。

Log4net 有三个主要组件:loggers,appenders 和 layouts这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信息的写入位置(如控制台,文件,内存,数据库等)。过滤器(filter)帮助这些组件,控制追加器(appender)的行为和把对象转换成字符串的对象渲染。

 

日志(Loggers)等级

该规则是 log4net 的核心。它假设等级是有序的。对于标准等级,具有 DEBUG < INFO < WARN < ERROR < FATAL。

用相同的参数调用 log4net.LogManager.GetLogger 方法总是返回引用一个完全相同 logger 对象。如下所示:

ILog x = LogManager.GetLogger("wombat");
ILog y = LogManager.GetLogger("wombat");

x 和 y 完全引用一个相同的 logger 对象。

因此,有可能配置一个日志器,然后在代码中的任何地方都可以检索到相同的实例。在生物学上,父母总是先于它们的孩子,而 log4net 日志器可以以任何顺序创建和配置。具体地说,一个“父”日志器将发现和链接到它的后代,即使它在它的后代之后才实例化。

log4net 环境的配置通常是在应用程序初始化。优先的方法是读取一个配置文件。

追加器(Appenders)

已经实现的输出方式有:

  • AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
  • AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。
  • AspNetTraceAppender  能用asp.net中Trace的方式查看记录的日志。
  • BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。
  • ConsoleAppender 将日志输出到应用程序控制台。
  • EventLogAppender 将日志写到Windows Event Log。
  • FileAppender 将日志输出到文件。
  • ForwardingAppender 发送日志事件到子Appenders。
  • LocalSyslogAppender 将日志写到local syslog service (仅用于UNIX环境下)。
  • MemoryAppender 将日志存到内存缓冲区。
  • NetSendAppender 将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
  • OutputDebugStringAppender 将日志输出到Debuger,如果程序没有Debuger,就输出到系统Debuger。如果系统Debuger也不可用,将忽略消息。
  • RemoteSyslogAppender 通过UDP网络协议将日志写到Remote syslog service。
  • RemotingAppender 通过.NET Remoting将日志写到远程接收端。
  • RollingFileAppender 将日志以回滚文件的形式写到文件中。
  • SmtpAppender 将日志写到邮件中。
  • SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。
  • TelnetAppender 客户端通过Telnet来接受日志事件。
  • TraceAppender 将日志写到.NET trace 系统。
  • UdpAppender 将日志以无连接UDP数据报的形式送到远程宿主或用UdpClient的形式广播。

AdoNetAppender:

MS SQL Server:

CREATE TABLE [dbo].[Log] (    [Id] [int] IDENTITY (1, 1) NOT NULL,    [Date] [datetime] NOT NULL,    [Thread] [varchar] (255) NOT NULL,    [Level] [varchar] (50) NOT NULL,    [Logger] [varchar] (255) NOT NULL,    [Message] [varchar] (4000) NOT NULL,    [Exception] [varchar] (2000) NULL)
mssqlserver
appender配置:

MS Access:

建立数据表同“MS SQL Server” appender配置:

 Oracle9i:

create table log (   Datetime timestamp(3),   Thread varchar2(255),   Log_Level varchar2(255),   Logger varchar2(255),   Message varchar2(4000)   );
建立数据表:
appender配置:

SQLite:

CREATE TABLE Log (    LogId        INTEGER PRIMARY KEY,    Date        DATETIME NOT NULL,    Level        VARCHAR(50) NOT NULL,    Logger        VARCHAR(255) NOT NULL,    Message        TEXT DEFAULT NULL);
建立数据表:
appender配置:

实际上,你会发现,建立数据表都是差不多的,appender配置几乎也一致。如果我们每种数据库的表字段都保持一致,实际上,只需要改:connectionType、connectionString、commandText

  

AspNetTraceAppender:

这段配置可将日志信息输出到页面的Trace上下文环境。如果日志的级别低于WARN,会以System.Web.TraceContext.Write方法输出;如果级别为WARN或WARN以上则会以System.Web.TraceContext.Warn方法输出,下图中的日志信息的不同颜色可以说明这一点。 效果图如下:

  

BufferingForwardingAppender :

BufferingForwardingAppender的主要作用是将输出到指定类型(这里是LogFileAppender)的Appender的日志信息进行缓存。bufferSize属性指定了缓存的数量,如果value为5,那么将在信息量达到6条的时候,把这些日志批量输出。appender-ref属性指定了缓存的Appender类型,同root节点一样,这里可以指定多个。

  

ColoredConsoleAppender:

ColoredConsoleAppender将日志信息输出到控制台。默认情况下,日志信息被发送到控制台标准输出流。下面这个示例演示了如何高亮显示Error信息。

  

ConsoleAppender:

ConsoleAppender将日志信息输出到控制台标准输出流。

  

EventLogAppender:

EventLogAppender将日志写入本地机器的应用程序事件日志中。默认情况下,该日志的源(Source)是AppDomain.FriendlyName,也可以手动指定其它名称。

  

FileAppender:

FileAppender将日志信息输出到指定的日志文件。

File指定了文件名称,可以使用相对路径,此时日志文件的位置取决于项目的类型(如控制台、Windows Forms、ASP.NET等);也可以使用绝对路径;甚至可以使用环境变量,如<file value="${TMP}\log-file.txt" />。

AppendToFile指定是追加到还是覆盖掉已有的日志文件。
还可以添加如下属性<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />来使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。

  

View Code平时使用的配置如下

日志器可以采用多个追加器,在配置文件中,可以直接这样使用:

  

转载于:https://www.cnblogs.com/ingstyle/p/6655534.html

你可能感兴趣的文章
电商网站的宕机案例分析
查看>>
QT 5.1 Beta1 发布,支持静态 Qt 构建
查看>>
eclipse 我来了
查看>>
Counting Pair
查看>>
并行接口和串行接口
查看>>
Python索引页
查看>>
Oracle Pivot学习心得
查看>>
【JAVA并发编程实战】9、锁分段
查看>>
【SCALA】1、我要开始学习scala啦
查看>>
Stripies
查看>>
引包问题
查看>>
查看Linux端口的占用及连接情况
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
020 线程的综合考虑
查看>>
009 IOC--初始化和销毁
查看>>
matlab中的polyfit函数。
查看>>
C# 多线程的代价~内存都被吃了!
查看>>
不规则的组合方向键或功能键
查看>>
MVC4中压缩和合并js文件和样式文件
查看>>
上传多媒体文件到微信公众平台
查看>>