log4net配置及使用
log4net简介
log4net库是Apache log4j框架在Microsoft.NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
log4net详解
Appenders
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的形式广播。 |
Filters
使用过滤器可以过滤掉Appender输出的内容
| 属性 | 说明 |
|---|---|
| DenyAllFilter | 阻止所有的日志事件被记录 |
| LevelMatchFilter | 只有指定等级的日志事件才被记录 |
| LevelRangeFilter | 日志等级在指定范围内的事件才被记录 |
| LoggerMatchFilter | 与Logger名称匹配,才记录 |
| PropertyFilter | 消息匹配指定的属性值时才被记录 |
| StringMathFilter | 消息匹配指定的字符串才被记录 |
Layouts
Layout用于控制Appender的输出格式,可以是线性的也可以是XML。
| 属性 | 说明 |
|---|---|
| SimpleLayout | 简单输出格式,只输出日志级别与消息内容。 |
| RawTimeStampLayout | 用来格式化时间,在向数据库输出时会用到。 |
| ExceptionLayout | 需要给Logger的方法传入Exception对象作为参数才起作用,否则就什么也不输出。输出的时候会包含Message和Trace。 |
| PatterLayout | 使用最多的一个Layout,能输出的信息很多 |
Loggers
Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
日志的等级,它们由高到底分别为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
在具体写日志时,一般可以这样理解日志等级:
- FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
- ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
- WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
- INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
- DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。
log4net使用说明
引用log4net
在NuGet管理中直接搜索安装即可。

编写配置文件
个人常用的配置文件仅供参考。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!-- Level的级别,由高到低 -->
<!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->
<!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->
<log4net>
<!--错误日志类-->
<logger name="logerror">
<!--日志类的名字-->
<level value="ALL" />
<!--定义记录的日志级别-->
<appender-ref ref="ErrorAppender" />
<!--记录到哪个介质中去-->
</logger>
<!--信息日志类-->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!--错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<param name="File" value="Log\\LogError\\" />
<!--日志输出到exe程序这个相对目录下-->
<param name="AppendToFile" value="true" />
<!--输出的日志不会覆盖以前的信息-->
<param name="MaxSizeRollBackups" value="100" />
<!--备份文件的个数-->
<param name="MaxFileSize" value="10240" />
<!--当个日志文件的最大大小-->
<param name="StaticLogFileName" value="false" />
<!--是否使用静态文件名-->
<param name="DatePattern" value="yyyyMMdd".txt"" />
<!--日志文件名-->
<param name="RollingStyle" value="Date" />
<!--文件创建的方式,这里是以Date方式创建-->
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="时间:%date %n线程ID[%thread]
%n日志级别:%-5level %n记录类:%logger %n扩展信息:%property
-%n异常:%exception %n错误描述:%n%message%newline%n"/>
</layout>
</appender>
<!--信息日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".txt"" />
<param name="RollingStyle" value="Date" />
<!--信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="时间:%date %n线程ID[%thread]
%n日志级别:%-5level %n记录类:%logger %n扩展信息:%property
-%n异常:%exception %n错误描述:%n%message%newline%n"/>
</layout>
</appender>
</log4net>
</configuration>
其中layout节点的配置说明:
- %m(message):输出的日志消息;
- %n(newline):换行;
- %d(datetime):输出当前语句运行的时刻;
- %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
- %t(threadid):当前语句所在的线程ID ;
- %p(priority): 日志的当前日志级别;
- %c(class):当前日志对象的名称;
- %L:输出语句所在的行号;
- %F:输出语句所在的文件名;
- %-10:表示最小长度为10,如果不够,则用空格填充
编写扩展方法
using System;
namespace Common
{
public class LogHelper
{
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
public static void WriteLog(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}
public static void WriteLog(string info, Exception ex)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, ex);
}
}
}
}
在应用程序的主入口点中读取配置文件
using log4net.Config;
using System;
using System.IO;
using System.Windows.Forms;
namespace AppSettings
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
InitLog4Net();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SettingsForm());
}
private static void InitLog4Net()
{
var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
XmlConfigurator.ConfigureAndWatch(logCfg);
}
}
}
程序中调用
引用上面的LogHelper
try
{
//需要检测异常的代码
}
catch (Exception ex)
{
LogHelper.WriteLog("自定义的描述信息", ex);
}
日志输出如下
文件结构

日志内容

log4net配置及使用的更多相关文章
- Common.Logging log4net Common.Logging.Log4Net 配置
1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...
- Log4Net 配置StmpAppender
目录 Log4Net 配置StmpAppender 1 1.前言 1 2.详细配置 1 1.StmpAppender配置 1 2.Root 配置 2 3.更多选项 ...
- C# Log4Net配置
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...
- Log4net配置与使用简要说明
log4net详细配置:http://logging.apache.org/log4net/本文描述如有错误,以官网的说明为准;p 一:先来看看log4net中的几个概念: 1. log4net继承机 ...
- MVC Log4Net 配置
1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...
- ASP.NET MVC学习之Log4Net配置(日志记录)
Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...
- C# 日志系统 log4net 配置及使用
1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...
- JWT+Log4net配置与使用
Log4net的优点 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.程序运行过 ...
- log Log4NET配置
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过 日志查看系统的运行过程,从而发现系统的问题.日志的作用:将 ...
- NHibernate的调试技巧和Log4Net配置
1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...
随机推荐
- 冲刺Day7
每天举行站立式会议照片: 昨天已完成的工作: 1.确认商品分类栏,并前后端交互 2.检查.更正订单模块的代码 3.检查.更正用户模块的代码 今天计划完成的工作: 成员 任务 高嘉淳 检查代码.提供测试 ...
- 第二篇 Scrum 冲刺博客
一.站立式会议 1. 会议照片 2. 工作汇报 成员名称 昨日(23日)完成的工作 今天(24日)计划完成的工作 工作中遇到的困难 陈锐基 - 完成个人资料编辑功能- 对接获取表白动态的接口数据并渲染 ...
- 团队作业4-Day2
团队作业4-Day2 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图(部分) 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:今日进行了小程序与网页代码编写的区 ...
- 题解 CF504E 【Misha and LCP on Tree】
PullShit 倍增和树剖的差距!!! 一个 TLE, 一个 luogu 最优解第三!!! 放个对比图(上面倍增,下面轻重链剖分): 不过这是两只 log 非正解... Solution \(LCP ...
- 算法——移掉K位数字使得数值最小
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. leetcode 解题思路:如果这个数的各个位是递增的,那么直接从最后面开始移除一定就是最最小的:如果这个数的 ...
- 深入理解Java虚拟机(七)——类文件结构
Java的无关性 由于计算机领域中有很多操作系统和硬件平台同时在竞争,所以,很多编程语言的程序设计会与其运行的平台和操作系统产生耦合,这样就大大增加了程序员的工作,为了适应不同的平台,需要修改很多代码 ...
- window下使用cmd查看端口占用的进程,并杀死该进程
做项目的时候经常会遇到"address already in use"的情况,此时可以选择使用dos命令将该进程杀死. 首先,查找端口对应的进程,使用命令(以进程号8080为例): ...
- 【Jenkins】环境配置及安装
下载地址: 国外官网:https://www.jenkins.io/zh/download/(版本最新) 国内镜像:http://mirrors.jenkins-ci.org/windows/ 清华镜 ...
- easyui textbox validatebox 默认显示tip提示
easyui验证是不显示tip提示的,验证不通过时只将输入框变红,要触发一个mouse(鼠标放上去)的事件才会显示tip. 现在想要验证不通过时直接显示提示,给用户更加直观的错误提示. 找到源代码中验 ...
- AWT01-体系概述
1.概述 AWT(Abstract Window Toolkit),中文译为抽象窗口工具包,该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具. ...