Log4Net配置以及使用
跟踪程序代码,及时发现程序的运行状态,是每个成熟的软件所必不可少的一个环节,网站发布到真实的环境之后,对于程序的运行状态,我们并不能想开发环境那也,点击调试。日志记录显示就尤为重要,在.NET中记录日志的方法有很多种,常用的也就是Log4net,NLog。这篇文章主要记录Log4net的使用情况,NLog的使用放在后续章节介绍。(PS:其他同仁也介绍了很多关于Log4net的使用,我再他们的基础上梳理了一下使用方式,按自己的理解写下了这篇内容,如果有部分内容雷同,还望原博主理解)
Log4net是针对.Net程序开发的一版日志记录的DLL组件,使用者只需要配置Config文件,点击添加引用DLL。使用起来也简单方便。Log4Net官网地址有开源的项目,我们开源获取源码,分析代码,这里主要针对使用方面进行介绍:Config文件的配置、API部分代码完善;Log4Net下载DLL
Log4net的日志等级从低到高依次分为:ALL ---> DEBUG ---> INFO ---> WARN ---> ERROR ---> FATAL ---> OFF
Log4net中Config配置介绍:
下面是一个完善的config的配置,将日志信息配置到文本文件中;
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<!--日志-->
<log4net>
<!--<root>
<level value="ALL"/>
<appender-ref ref="ErrorAppender"/>
<appender-ref ref="InfoAppender"/>
</root>-->
<logger name="logerror">
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="App_Log\\Error\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false"/>
<param name="MaximumFileSize" value="10MB"/>
<param name="Threshold" value="ALL"></param>
<param name="DatePattern" value="yyyyMM"\\log_"yyyyMMdd".log""/>
<param name="RollingStyle" value="Composite"/>
<param name="CountDirection" value=""/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="App_Log\\Info\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false"/>
<param name="MaximumFileSize" value="10MB"/>
<param name="Threshold" value="ALL"></param>
<datePattern value="yyyyMMdd" />
<param name="RollingStyle" value="Date"/>
<param name="CountDirection" value=""/>
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="-------------start----------- "/>
<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
</layout>
</appender>
</log4net>
</configuration>
config配置参数说明如下:
参数名 |
描述 |
||||||||||||||||||||
filter |
可以有0或多个filter,具体配置在下面的Filter项说明。 |
||||||||||||||||||||
layout |
可以有0或者说1个layout,当没有layout时,没有输出。具体配置在下面的layout项说明 |
||||||||||||||||||||
param |
Param有多个可以进行配置,常用的:
例如: <param name="File" value="UpLoads\\Log\\"/> <param name="MaximumFileSize" value="3000"/> <param name="StaticLogFileName" value="false"/> <param name="Threshold" value="Debug"></param> <param name="DatePattern" value="yyyyMM"\\#{ServerHostName}-"yyyyMMdd".log""/> <param name="RollingStyle" value="Date"/> |
ConversionPattern中的部分标识符的意义介绍如下:
<!--==================layout节点的配置说明start======================-->
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换 行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
模式字符串为:%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);
log.Debug(“Hello”);
则输出为下面的形式:
Exam.Log - Hello
%L:输出语句所在的行 号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
<!--==================layout节点的配置说明end======================-->
C#代码使用介绍
添加代码如下:
/// <summary>
/// 使用LOG4NET记录日志的功能,在WEB.CONFIG里要配置相应的节点
/// </summary>
public class Log4NetHelper
{
//log4net日志专用
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static void SetConfig()
{
log4net.Config.XmlConfigurator.Configure();
} public static void SetConfig(FileInfo configFile)
{
log4net.Config.XmlConfigurator.Configure(configFile);
}
/// <summary>
/// 普通的文件记录日志
/// </summary>
/// <param name="info"></param>
public static void WriteLog(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}
/// <summary>
/// 错误日志
/// </summary>
/// <param name="info"></param>
/// <param name="se"></param>
public static void WriteLog(string info, Exception se)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, se);
}
}
}
主程序中记录Log的使用方式:
static void Main(string[] args)
{
Log4NetHelper.SetConfig();
//ILog lgclient = LogManager.GetLogger("loginfo");
//lgclient.Info("Info-message"); //lgclient.Debug("Debug-message"); //lgclient.Warn("Warn-message"); LogHelper.WriteLog("MyWorkLogInfo");
Console.ReadLine();
}
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 ...
随机推荐
- 剑指Offer 替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路: 替换空格,先遍历一遍记 ...
- IC/RFID/NFC 关系与区别
IC卡 (Integrated Circuit Card,集成电路卡) 有些国家和地区也称智能卡(smart card).智慧卡(intelligent card).微电路卡(microcircuit ...
- 17.2---#字棋(CC150)
牛客网的在线题.思路,比较简单.就是判断一下是否有连起来的1. public static boolean checkWon(int[][] board){ boolean res = false; ...
- Cannot load supported formats: Cannot run program "svn": CreateProcess error=2
svn CreateProcess error=2, 系统找不到指定的文件 IntelliJ IDEA 13.1.2安装后,SVN checkout时候会出现如下错误: Cannot load sup ...
- 【GoLang】GoLang map 非线程安全 & 并发度写优化
Catena (时序存储引擎)中有一个函数的实现备受争议,它从 map 中根据指定的 name 获取一个 metricSource.每一次插入操作都会至少调用一次这个函数,现实场景中该函数调用更是频繁 ...
- Angularjs与bootstrap.datetimepicker结合实现日期选择器
http://www.lovelucy.info/angularjs-best-practices.html http://damoqiongqiu.iteye.com/blog/1917971 ht ...
- ios 引入第三方库 运行时找不到函数实现
今天引入webtrends 这个库,结果一直运行时找不到函数,纳闷了一下午! 后来发现,是other flag没有设置对,对于那些包含category用来扩展ios原始类型的库,链接的时候需要特别的链 ...
- uml 推荐文章
http://blog.csdn.net/zfrong/article/details/4086424 http://www.cnblogs.com/ywqu/archive/2009/12/14/1 ...
- 多字段 java对象排序
public class ReflexUtil { static Logger logger = LoggerFactory.getLogger(ReflexUtil.class); //getMet ...
- codeforces 556C. Case of Matryoshkas 解题报告
题目链接:http://codeforces.com/contest/556/problem/C 题目意思:有 n 个数(1,2,...,n)组成 k 条链.第 i 条链由 mi 个数组成.每一秒只可 ...