设为首页 收藏本站
查看: 741|回复: 0

[经验分享] Apache log4net 入门

[复制链接]

尚未签到

发表于 2016-12-30 10:21:45 | 显示全部楼层 |阅读模式
版本: 2.0.1.2.10
下载: http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip
测试环境: VS.NET2008 / ASP.NET2.0 / XP(SP3) / IIS6.0
步骤1: 添加 log4net 引用
  创建测试 ASP.NET2.0 项目,在项目中引用 log4net-1.2.10\bin\net\2.0\release\log4net.dll,见下图:
DSC0000.jpg
步骤2: 修改 web.config
  在 web.config 文件中添加下面配置:

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
...
</configuration>


步骤3: 创建 log4net 配置文件
  创建 log4net.config 文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ALL"/>
<appender-ref ref="SysAppender"/>
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="WebLogger">
<level value="DEBUG"/>
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="App_Data/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value="&#13;&#10;----------------------header--------------------------&#13;&#10;" />
<param name="Footer" value="&#13;&#10;----------------------footer--------------------------&#13;&#10;" />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>


  这里注意 log4net.config 文件中根节点名称要与上一步 web.config 配置中的
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  名称保持一致。
步骤4: 在程序集中指定 log4net 配置文件
  打开项目中的 Properties/AssemblyInfo.cs,并添加代码:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过下列属性集
// 控制。更改这些属性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("TestLog4net1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("CHINA")]
[assembly: AssemblyProduct("TestLog4net1")]
[assembly: AssemblyCopyright("Copyright © CHINA 2010")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 属性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("3d5900ae-111a-45be-96b3-d9e4606ca793")]
// 程序集的版本信息由下面四个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
// 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
// 方法是按如下所示使用“*”:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
// log4net 日志组件配置
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]


  上面代码最后 2 行是为 log4net 添加的。
  // log4net 日志组件配置
  [assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]

步骤5: 测试代码
  测试单元需要引入 log4net 命名空间:
  using log4net;

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using log4net;
namespace TestLog4net1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
object o = ConfigurationSettings.GetConfig("log4net");
log4net.Config.DOMConfigurator.Configure(o as System.Xml.XmlElement);
log4net.ILog logger = log4net.LogManager.GetLogger("WebLogger");
//下面按照从上倒下顺序,日志级别由低到高,debug是最低级别,fatal级别最高
logger.Debug("新加一条调试日志");      
logger.Info("新加一条普通信息日志");
logger.Warn("新加一条警告日志");
logger.Error("新加一条错误日志");
logger.Fatal("新加一条致命错误日志");
}
}
}


  执行结果,在测试程序 App_Data 目录下产生 Logs_20100227.txt 文件,内容如下:
  ----------------------header--------------------------
  2010-02-27 11:15:11,765 [4] DEBUG WebLogger - 新加一条调试日志
  2010-02-27 11:15:11,875 [4] INFO  WebLogger - 新加一条普通信息日志
  2010-02-27 11:15:11,875 [4] WARN  WebLogger - 新加一条警告日志
  2010-02-27 11:15:11,875 [4] ERROR WebLogger - 新加一条错误日志
  2010-02-27 11:15:11,875 [4] FATAL WebLogger - 新加一条致命错误日志
  简单使用 log4net 的示例就完成了。
切割日志文件的 log4net.config 示例:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ALL"/>
<appender-ref ref="SysAppender"/>
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="WebLogger">
<level value="DEBUG"/>
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="App_Data\Logs.txt"/>
<param name="AppendToFile" value="true"/>
<param name="MaxSizeRollBackups" value="12"/><!-- 切割最多文件数 -->
<param name="MaximumFileSize" value="500KB"/><!-- 每个文件的大小 -->
<param name="RollingStyle" value="Size"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>
</log4net>


日志行内容配置:
  %m(message): 输出的日志消息,如ILog.Debug(…)输出的一条消息
  %n(new line): 換行
  %d(datetime): 输出当前语句运行的时刻
  %r(run time): 输出程序从运行到执行到当前语句时消耗的毫秒数
  %t(thread id): 当前语句所在的线程ID
  %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
  %c(class): 当前日志对象的名称
  %L: 输出语句所在的行号
  %F: 输出语句所在的文件名
  %-数字: 表示该项的最小长度,如果不够,则用空格填充
  例如:
  <param name="ConversionPattern" value="%d [%t] %-5p %F(%L) -- %m%n" />
  输出:
  2010-02-27 11:47:50,437 [4] DEBUG E:\Projects\zah\TcmForum\TestCode\TestLog4net1\TestLog4net1\Default.aspx.cs(26) -- 新加一条调试日志

博客原文:http://cbuiler.iyunv.com/admin/blogs/604154
内容部分引用:
  1.http://www.xueit.com/asp.net/show-5223-2.aspx  作者:dodo

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321507-1-1.html 上篇帖子: 学习Apache Mina 下篇帖子: 编译apache失败
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表