log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具

1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。

2. Log4net的结构如下:

log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及Layout(布局).

3. 配置节点是由logger和appender组成的. logger说明要使用哪些appender. appender说明日志怎样存储,如写入系统日志,文本,数据库,邮件等

appender节里有两个重要的子节点. filter负责过滤你想要得到的日志级别或包含特殊的字符串 layout负责日志输出的样式.

4.使用步驟:

4.1 加入參考,即加載log4net.dll

4.2 配置Config文件:

<configuration>

<configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>

<log4net>
    <!--定义输出到文件中-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="log\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd‘.txt‘" />
      <staticLogFileName value="false" />
      <param name="MaxSizeRollBackups" value="100" />
      <layout type="log4net.Layout.PatternLayout">
              <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%newline %n記錄時間:%date %n對應的窗體:%logger property: [%property{NDC}] - %n記錄信息:%message%newline %n" />
      </layout>
    </appender>

<!--每条日志末尾的文字说明-->
    <root>
      <level value="ERROR" />
      <!--文件形式记录日志-->
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

</configuration>

4.3 實體類

[assembly: log4net.Config.XmlConfigurator(Watch = true)]   //如何沒有這句,將看不到記錄日誌的文件夾

namespace HanKeDemo

{

class LogHelper

{

/// <summary>

/// 输出日志到Log4Net

/// </summary>

/// <param name="t"></param>

/// <param name="ex"></param>

#region static void WriteLog(Type t, Exception ex)

public static void WriteLog(Type t, Exception ex)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

log.Error("Error", ex);

}

#endregion

/// <summary>

/// 输出日志到Log4Net

/// </summary>

/// <param name="t"></param>

/// <param name="msg"></param>

#region static void WriteLog(Type t, string msg)

public static void WriteLog(Type t, string msg)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

log.Error(msg);

}

#endregion

/// <summary>

/// 操作系统的登录用户名

/// </summary>

/// <returns></returns>

public static string GetUserName()

{

try    {

return System.Environment.UserName.ToUpper();

}

catch

{

return "unkonwn";

}

}

}

}

4.4 調用實例

LogHelper.WriteLog(typeof(MainForm), strMsg);

时间: 2024-09-26 23:07:41

log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具的相关文章

程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化. (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件. (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式. acid,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability). 数据查询:select sele

log4net在XP下,日志信息无法记录的问题

系统采用的是LOG4Net日志组件,在win7下一切正常,但是在XP下却发现日志一致记录不了,匪夷所思.然后我就鬼使神差的把这个自己觉得没用的记录项property:[%property{NDC}]给删除了 然后再打开系统 神奇发生了 日志成功记录了 OK了.奇怪 奇怪 真奇怪 原文地址:https://www.cnblogs.com/xiaoxihebei/p/8510673.html

新手程序员 工作日志 2017.4 .16

今天是星期日 这两天 好好地睡了两天 这一周干了3 个任务 第一个任务是删除jsp文件的一个选项 关键是如何从页面上找到相应的位置所在并修改 具体的从页面查看 编辑 按钮的页面 所在 进行查找Struts层 的 wrongthemebook.xml 文件----查找相应的method方法(editor)----查找相应的文件jsp) {wsf} 是系统安排的变量 {ctx}自己定义的变量 2 文森特 的 格式改变问题 即是打印机构显示为 文森特 ---xxx代理机构---- webRoot---

新手程序员 工作日志 a

这几天都没有跟新 是因为哦这几天在做任务项目 虽然是个小项目 但是 对我来说 真他妈难 首先 记上回的  strtus后 我在第2 天 看了 spring 当然就看懂一点 之后 第3 天 看了 ibates 之后也就是 上周 4 我看完了 ajax 对只是粗略的看完 然后周五 开始做项目 妈的 找了网上很多的教程 有个张国的写的 的还好 于是我把白找他的做 具体是 先 配置了 maven插件 为的是 导出war 吧 再讲 war包 放在 tomcat的 webapp的文件夹里 然后运行tomac

新手程序员 工作日志 2017.7.25.18:02 关于改bug网页的使用

责人这里看哪个是自己名下的bug  点进去 点bug对应的ID号进入 综合部-赵鑫 2017/7/25 17:40:47 改完bug修改下bug的状态  附加意见那里可以增加自己的意见 可写也可不写  完成后 点击储存变更

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

黑马程序员----预处理指令(宏定义、条件编译、文件包含)

预处理指令共有三种: 宏定义: 条件编译: 文件包含: 一.预处理指令的执行时刻: 在代码翻译成0和1之前 二.预处理指令的特点: 1.预处理指令都是以#号开头: 2.预处理指令的位置可以随便写的: 3.预处理指令的作用域:从编写指令的哪一行代码开始,一直到文件结尾,或者遇到相应的#undef.... 三.宏定义(#define) 1.不带参数的宏定义: 例: #define COUNT 4      //  注意:这里没有分号 ....... #undef COUNT 注意: 1.宏名一般用大

.NET 程序员-你应该知道的一些开源项目——收藏

Json.NET http://json.codeplex.com/ Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象.让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换. Math.NET http://www.mathdotnet.com/ Math.NET的目标是为提供一款自身包含清晰框架的

程序员必备,C#各类项目、开源项目插件资料收藏

一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率. NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP.NKalore的语法简单.直观,它的编译器是基于Mono C#编译器(MCS).NKalore目前只能在命令行或#Develop内部使用.NKalore兼容公共语言规范CLS