Log4net配置学习

Logger hierarchy (层次级别)

Logger 都是已经命名的实体。 Logger 的名称区分大小写并遵循以下规则:

1 如果 A logger 的名称如果是 B logger 名称的前缀(通过“ . ”连接),则说 A logger 是 B logger 的祖父级。

2 如果 A logger 的名称和 B logger 的名称之间不存在其他的 logger 名称,则 A logger 是 B logger 的父级。

例子: A logger 名称为“ Foo.Bar ”, B logger 名称为“ Foo.Bar.Baz ”, A 为 B 的父级。名称为“ System ”的 logger 是名称为“ System.Text.StringBuilder ”的祖父级。

Root logger 位于 logger 层次级别中的顶级。它有例外的三条规则:

1 Root logger 总是存在的。

2 Root logger 不能通过名称或取。

3 Root logger 有一个默认的 Level 值为 Debug 。

Logger 可以通过 log4net.LogManager 类的静态方法 GetLogger 获取。

Level 值: ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF

Level 继承规则:如果一个 logger 没有定义 Level ,它的 Level 值将从它的父级(定义了 Level )继承。

日志纪录请求通过调用 logger 实例的输出方法实现。这些输出方法有 Debug , Info , Warn , Error 和 Fatal 。

通过定义,输出方法决定了日志纪录请求的 Level 。例如, log 是一个 logger 实例,那么语句 log.Info(“..”) 的日志纪录请求 Level 为 INFO 。

如果日志纪录请求的 Level 比 logger 本身定义(或继承)的 Level 高,则请求是可行的,否则不可行。

简单规则:如果日志记录请求的 Level 为 L , logger 本身定义(或继承) Level 为 K ,当 L>=K 时,日志纪录请求是可行的。

Level 级别: DEBUG

  1<info<warn<error<fatal <filter="" a="" additivity="" appender="" console="" false="" fatal="" file="" filter="" filters="" info="" level="" log4net="" log4net.logmanager.getlogger="" logger="" ms="" root="" sql="" true="" type="log4net.Filter.LevelRangeFilter" 、文件、控制台或者系统日志等等。="" 。="" 。如果="" 。每一个可行的日志纪录请求将输出到所有的="" 一个="" 中定义了一个="" 中引用的。换句话说,="" 中引用的,还包括父级="" 中继承。="" 之间的日志纪录请求。="" 从="" 以及它的子="" 使用以下="" 允许日志以不同的方式输出,如:="" 到="" 只接受="" 可以有多个="" 可以被创建和配置成任何顺序。特别的是,一个父级="" 可能比子级="" 后实例化,但却可以在子级中查找到。="" 后,不用在代码中传递引用而可以获取同一个="" 将在="" 将采用覆盖的方式,而不再从父级="" 属性默认为="" 方法,可以获取同一个="" 时,="" 是在当前这个="" 是用来过滤="" 有一个="" 的="" 的实例引用。这样在配置了一个="" 的层次级别中添加性的继承。例如在="" 的引用了。与生物上的亲子关系(父亲总是先于孩子)基本相反,在="" 能接受的日志信息。="" 至少有一个="" 通过名称,调用="" 都有两个="" 里,="" ,则="" ,当设置为="" ,这些="" ,那么所有的="">
  2<param name="LevelMin" value="INFO"/>
  3<param name="LevelMax" value="FATAL"/>
  4
  5
  6使用以下  filter  的  appender  只接受包含子串为“  database  ”的日志纪录。 
  7
  8<filter type="log4net.Filter.StringMatchFilter">
  9<param name="StringToMatch" value="database"/>
 10</filter>
 11<filter type="log4net.Filter.DenyAllFilter"></filter>
 12
 13第一个  filter  将会在日志纪录信息中查找“  database  ”,如果找到则不再匹配下面得  filter  ,  appener  接受并纪录该日志。如果没有找到则继续使用第二个  filter  ,该  filter  将拒绝任何日志信息。 
 14
 15Layouts  用来定制输出格式。 
 16
 17加载配置 
 18
 19ConfigFile  属性:当我们自己定义了一个  log4net  的配置文件时,可以通过这个属性来指定配置文件。 
 20
 21ConfigFileExtension  属性:当应用程序会编译成不同扩展名称的程序集时,可以使用这个属性。如  Sample  程序将编译成  Sample.exe  ,则  ConfigFileExtension  设置为“  config  ”,那么所使用的配置文件名称为:  Sample.exe.config  。注意不能和  ConfigFile  属性同时使用。 
 22
 23Watch  属性:在运行期间是否监测配置文件。当值为  true  时,  FileSystemWatcher  将用来监视配置文件的内容改变、重命名和删除通知。 
 24
 25为应用程序加载  log4net  的配置,可以通过在应用程序集中设置属性。 
 26
 27例如: 
 28
 29[assembly: log4net.Config.DOMConfigurator(ConfigFile="Sample.config")] 
 30
 31[assembly: log4net.Config.DOMConfigurator(ConfigFileExtension="config")] 
 32
 33也可以不使用任何参数,这时将使用应用程序的配置文件。 
 34
 35[assembly: log4net.Config.DOMConfigurator()] 
 36
 37另一种方式是在代码中使用  DOMConfigurator  类 
 38
 39` log4net.Config.DOMConfigurator.Configure(  `
 40
 41` new FileInfo("TestLogger.Exe.Config"));  `
 42
 43使用  ConfigureAndWatch(..)  可以指定一个配置文件并且监视该文件的变化。  ` `
 44    
 45    
 46    ****
 47
 48PatternLayout 
 49
 50每一种指定的转换符号都以  %  开始,后面跟着一个可选的格式符号和一个转换符号。转换符号用来指定输出的数据类型,如  Level  ,  logger  ,  date  等。 
 51
 52例如:转换模型“  %-5p [%t]: %m%n  ” 
 53
 54ILog log = LogManager.GetLogger(typeof(TestApp)); 
 55
 56log.Debug("Message 1"); 
 57
 58log.Warn("Message 2"); 
 59
 60转换后: 
 61
 62DEBUG [main]: Message 1 
 63
 64WARN  [main]: Message 2 
 65
 66“  %-5p  ”表示输出日志纪录请求的  Level  值,宽度为  5  个子符,并左对齐。 
 67
 68转换符号列表: 
 69
 70a 
 71
 72| 
 73
 74输出创建日志的  AppDomain  的名称   
 75  
 76---|---  
 77  
 78c 
 79
 80| 
 81
 82默认输出  logger  的全名称。后面可跟“  {  数字  }  ”,则表示输出与数字对应的  logger  名称级别(从右边开始)。如全名为“  a.b.c  ”,“  %c{2}  ”输出“  b.c  ”   
 83  
 84C 
 85
 86| 
 87
 88输出调用日志纪录请求的类名。后面可跟“  {  数字  }  ”,表示输出与数字对应的类名称(包含命名空间,从右边开始)。   
 89  
 90d 
 91
 92| 
 93
 94输出日志记录时间,后可跟“  {  时间格式  }  ”。默认为  yyyy-MM-dd HH:mm:ss,fff   
 95  
 96F 
 97
 98| 
 99
100输出调用日志纪录请求的文件全名。(会影响速度)   
101  
102l 
103
104| 
105
106输出调用日志纪录请求的一些本地信息。如类和成员名,调用文件和调用声明的代码行数。(极其影响性能)   
107  
108L 
109
110| 
111
112输出调用日志纪录请求的声明代码行数。(极其影响性能)   
113  
114m 
115
116| 
117
118输出应用程序所要输出的信息。   
119  
120M 
121
122| 
123
124输出调用日志纪录请求的成员名称。(极其影响性能)   
125  
126n 
127
128| 
129
130输出换行符号   
131  
132p 
133
134| 
135
136输出日志请求的  Level  值   
137  
138P 
139
140|   
141  
142r 
143
144| 
145
146输出从应用程序启动开始到日志纪录请求的时间(毫秒)   
147  
148t 
149
150| 
151
152输出产生日志的线程名称,如果没有名称则输出线程的编号   
153  
154u 
155
156| 
157
158输出当前活动用户的名称。(  Principal.Identity.Name  )   
159  
160W 
161
162| 
163
164输出当前活动用户的  windows  标识。   
165  
166x 
167
168|   
169  
170X 
171
172|   
173  
174% 
175
176| 
177
178输出一个  %  号</info<warn<error<fatal>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus