一,在app.config中配置

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!--站点日志配置部分-->
<log4net>
<root>
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ERROR"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件名开头-->
<file value="c:\Log\TestLog4net.TXT"/>
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<datePattern value="(yyyyMMdd)"/>
<!--是否追加到文件,默认为true,通常无需设置-->
<appendToFile value="true"/>
<!--变换的形式为日期,这种情况下每天只有一个日志-->
<!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->
<!--<rollingStyle value="Date"/>-->
<!--变换的形式为日志大小-->
<!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->
<RollingStyle value="Size"/>
<!--每天记录的日志文件个数,与maximumFileSize配合使用-->
<MaxSizeRollBackups value="10"/>
<!--每个日志文件的最大大小-->
<!--可用的单位:KB|MB|GB-->
<!--不要使用小数,否则会一直写入当前日志-->
<maximumFileSize value="2MB"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%t]%-5p %c - %m%n"/>
</layout>
</appender>
</log4net>
</configuration>

二,写一帮助类

public class LogHelper
{
//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);
}
}

三、下载LOG4NET 并引用,搞定

Console.WriteLine("Begin Run");
XmlConfigurator.Configure();
Type type = MethodBase.GetCurrentMethod().DeclaringType;
ILog m_log = LogManager.GetLogger(type);
m_log.Debug("这是一个Debug日志");
m_log.Info("这是一个Info日志");
m_log.Warn("这是一个Warn日志");
m_log.Error("这是一个Error日志");
m_log.Fatal("这是一个Fatal日志");
Console.WriteLine("End");
Console.ReadLine();

最新文章

  1. quality center的使用简介
  2. hdfs 常用命令
  3. Ubuntu snappy is lame
  4. jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创
  5. Vulkan Tutorial 16 Command buffers
  6. java.nio.file.NoSuchFileException
  7. 非关系数据库一Memcached
  8. 2019清明期间qbxt培训qaq
  9. Flash10下复制到剪切板的一种新方法
  10. 008-副文本编辑器UEditor
  11. hdu 5676 ztr loves lucky numbers 打表+二分
  12. ip route 命令详解
  13. SQL截取字符串分隔符中间部门的办法
  14. 前端构建工具Gulp使用总结
  15. linux du查询目录所占的磁盘空间
  16. java基础篇---JSP内置对象详解
  17. 解决 listView gridView 与ScrollView嵌套时的冲突
  18. sock基础编程介绍
  19. 【Unity笔记】第三人称相机跟随
  20. python中的函数(基础)

热门文章

  1. ECMAScript 6 入门学习笔记(持续更新)
  2. 第三百四十四天 how can I 坚持
  3. Python使用UUID库生成唯一ID(转)
  4. windows平台下安装python的setuptools工具
  5. C#实现office文档转换为PDF或xps的一些方法( 转)
  6. mysql编码详解
  7. c语言中用宏定义一个常量,数字后面带个U, L, F的含义
  8. 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法
  9. MEF(Managed Extensibility Framework)依赖注入学习
  10. java -X 这不是标准的选项只是为了获取帮助信息