log4net配置使用说明(转)

简介: (一)log4net的标准配置文档示例    (二)log4net配置文件与程序的关联 log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以在自己指定的配置文件中。

(一)log4net的标准配置文档示例

<?xmlversion="1.0"encoding="utf-8" ?>

<configuration>

<configSections>

<sectionname="log4net"

type="log4net.Config.Log4NetConfigurationSectionHandler" />

</configSections>

<log4net>

<root>

<levelvalue="WARN" />

<appender-refref="LogFileAppender" />

<appender-refref="ConsoleAppender" />

</root>

<loggername="testApp.Logging">

<levelvalue="DEBUG"/>

</logger>

<appendername="LogFileAppender"  type="log4net.Appender.FileAppender" >

<paramname="File"value="log-file.txt" />

<paramname="AppendToFile"value="true" />

   <layouttype="log4net.Layout.PatternLayout">

<paramname="Header"value="[Header]&#13;&#10;"/>

<paramname="Footer"value="[Footer]&#13;&#10;"/>

<paramname="ConversionPattern" value="%d [%t] %-5p %c[%x]  - %m%n" />

</layout>

<filtertype="log4net.Filter.LevelRangeFilter">

<paramname="LevelMin"value="DEBUG" />

<paramname="LevelMax"value="WARN" />

</filter>

</appender>

<appendername="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >

<layouttype="log4net.Layout.PatternLayout">

<paramname="ConversionPattern" value="%d [%t] %-5p %c [%x] -%m%n" />

</layout>

</appender>

</log4net>

</configuration>

(二)log4net配置文件与程序的关联

log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以在自己指定的配置文件中。log4net框架中是使用log4net.Config.XmlConfigurator在程序集的级别上定义配置文件。

(1)winform程序中,如果配置在app.config文件中,配置文件的结构如示例。这时找到当前项目的Assemblyinfo.cs文件添加

          [assembly:log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch= true)]  app.config文件属性设置保持默认。

(2)winform程序中,如果配置在自定义文件中如“Config.txt”中。这时找到当前项目的Assemblyinfo.cs文件添加

          [assembly:log4net.Config.XmlConfigurator(ConfigFile="config.txt", Watch =true)]   Config.txt文件的属性要设置为复制。就是要输出到输出目录。

这个时候配置可以省略示例模版中<configSection>节点里的<section>节点。

ConfigFile:指出了我们的配置文件的路径及文件名,包括扩展名。

ConfigFileExtension:如果我们对被编译程序的程序集使用了不同的文件扩展名,那么我们需要定义这个属性,缺省的,程序集的配置文件扩展名为”config”。

Watch (Boolean属性): log4net框架用这个属性来确定是否需要在运行时监视文件的改变。如果这个属性为true,那么FileSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。

其中:ConfigFile和ConfigFileExtension属性不能同时使用,ConfigFile指出了配置文件的名字,例如,ConfigFile=”Config.txt”

ConfigFileExtension则是指明了和可执行程序集同名的配置文件的扩展名,例如,应用程序的名称是”test.exe”,ConfigFileExtension=”txt”,则配置文件就应该是”test.exe.txt”;

也可以在程序代码中用DOMConfigurator类打开配置文件。类的构造函数需要一个FileInfo对象作参数,以指出要打开的配置文件名。这个方法和前面在程序集里设置属性打开一个配置文件的效果是一样的。

log4net.Config.DOMConfigurator.Configure(newFileInfo("TestLogger.Exe.Config"));

DOMConfigurator类还有一个方法ConfigureAndWatch(..),用来配置框架并检测文件的变化。

(二)节点分析

在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。

<configSections>

<sectionname="log4net"

type="log4net.Config.Log4NetConfigurationSectionHandler" />

</configSections>

(三)log4net节点说明

(1)节点支持的属性,debug,update,threshold三个属性

debug 可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。

update可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。

threshold可选,取值是repository(库)中注册的level,默认值是ALL。

(2)支持子元素

       appender  0或多个

logger 0或多个

renderer 0或多个

root 最多一个

param 0或多个

(四)root节点说明

(1)根logger,所有其它logger都默认继承它。root元素没有属性。

(2)支持的子元素

appender-ref 0个或多个,要引用的appender的名字。

·                  level 最多一个。只有在这个级别或之上的事件才会被记录。

·                  param 0个或多个,设置一些参数。

<root>

          <levelvalue="WARN" />

         <appender-refref="LogFileAppender" />

         <appender-refref="ConsoleAppender" />

</root>

(五)Logger节点说明

(1)支持的属性name,Additivity两个属性

   name必须的,logger的名称

          additivity 可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。

(2)支持的子元素:

appender-ref 0个或多个,要引用的appender的名字。

·level最多一个。只有在这个级别或之上的事件才会被记录。

·param 0个或多个,设置一些参数。

例如:<loggername="testApp.Logging">

<levelvalue="DEBUG"/>

    </logger>

(六)Appender节点说明

(1)定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。支持name,type两个属性。

name 必须的,Appender对象的名称

type 必须的,Appender对象的输出类型

(2)支持的子元素:

·                  appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。

·filter 0个或多个,定义此app使用的过滤器。

·layout 最多一个。定义appender使用的输出格式。

·                  param 0个或多个,设置Appender类中对应的属性的值。

例如: LogFileAppender 节点日志文件输出。type="log4net.Appender.FileAppender"

                  ConsoleAppender节点控制台输出。type="log4net.Appender.ConsoleAppender" 

(七)Filter节点说明

过滤器,只能作为<appender>的子元素。

支持的属性:

type 必须的,Filter的类型

支持的子元素:param 0个或多个,设置一些参数。

(八)Layout节点说明

布局,只能作为<appender>的子元素。

支持的属性:

type 必须的,Layout的类型

支持的子元素:param 0个或多个,设置一些参数。

(九)Param

<param>元素可以是如何元素的子元素。

支持的属性:

name 必须的,取值是父对象的参数名。

value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。

type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。

支持的子元素:param 0个或多个,设置一些参数。

(十)Log4net xsd

        好多刚开始接触.Net不久的人一定会问.xsd文件是干嘛的?通俗点说这东西就是用来制定目标xm文档规则的,它是解释性的。大家一定有这个经验就是当你在App.config文件中写配置文件时会自动出现智能提示,而且在书写不规范或错误时还会出现警告。在后台其作用的就是对应的.xsd文件。好了不聊这个了,为了让我们在编辑log4Net配置文件时,也能有对应的提示和纠错功能。下面是我找到的log4net.xsd文件(郁闷,好像不能直接上传。哎)

log4net.xsd

使用方法是,把这个文件拷贝到D:\Program Files\Microsoft Visual Studio 8\Xml\Schemas目录下(根据你vs的安装目录修改地址),在配置log4net结点时,加上xmlns="urn:log4net"的命名空间。就可以获得智能提示和正确的错误提醒。

<log4net xmlns="urn:log4net">

在后续中,我将提供log4net输出到不同媒介的具体示例。
http://blog.csdn.net/mymhj/article/details/7518648

相关文章
|
5月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
433 0
|
5月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
501 6
|
6月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1109 5
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4479 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
12月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1121 0
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
216 0
|
9月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1062 4
|
8月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
11月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
318 22
|
12月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。