网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友

1、参考链接:http://blog.sina.com.cn/s/blog_642e41c201014pml.html

此方法是直接将配置文件配置在app.config

<configSections>
<!--在配置选项中加入log4net的引用-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="LogFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="../../logs/log.txt" /> <!--定义用文件来保存日志,生成的文件log.txt放在logs目录中,logs文件夹和应用程序生成的bin文件夹在同一目录下。-->
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--定义输出风格-->
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
<appender>
<!--一个配置文件可以有很多appender,一个appender节就相当于一个日志输出介质或方法。-->
</appender>
<logger name="logApp">
<!--定义logger对象的名字为logApp,以方便在代码中使用logger-->
<!--配置项可以不配置-->
<level value="ALL" />
<!--定义输出的信息等级为所有其中包括Fatal.Error.Warn.Info.Debug-->
</logger>
<root>
<!--定义日志输出的方式和等级-->
<level value="INFO" />
<appender-ref ref="LogFile" /><!--选择了文件输出,注意粗体部分对应的名称-->
</root>
</log4net>

  第二种方式就是单独将配置文件配置在log4net.config中,网上大多数都是这种方法,但是却没有说明关键的一步

  参考链接:http://www.cnblogs.com/zfanlong1314/p/3662679.html

  1. 新建一个配置文件,log4net.config配置方法同成web.config或app.config一致;
  2.如果windows应用程序请把配置文件设为:复制到输出目录 修改方法:在log4net.config上右击-->属性--->把"复制到输出目录" 值改为true;
  3.在要用到log4的地方命名空间上边加上:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

2、输出到自定义Textbox日志输出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net.Appender;
using System.Windows.Forms;
using log4net.Core;
using log4net.Layout; namespace log4myself
{
/// <summary>
/// Usage:
/// log4net.Config.BasicConfigurator.Configure();
/// var logPattern = "%date [%thread] %-5level %logger !%M - %message%newline";
/// var logAppender = new TextBoxBaseAppender()
/// {
/// TextBox = this.textBox2,
/// Layout = new PatternLayout(logPattern)
/// };
///
/// ((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetLoggerRepository()).Root.AddAppender(logAppender);
/// </summary>
public class TextBoxBaseAppender : AppenderSkeleton
{
public TextBoxBase TextBox { get; set; } public TextBoxBaseAppender()
{
} protected override void Append(LoggingEvent loggingEvent)
{
if (this.TextBox == null)
{
return;
} if (!this.TextBox.IsHandleCreated)
{
return;
} if (this.TextBox.IsDisposed)
{
return;
} var patternLayout = this.Layout as PatternLayout; var str = string.Empty;
if (patternLayout != null)
{
str = patternLayout.Format(loggingEvent); if (loggingEvent.ExceptionObject != null)
{
str += loggingEvent.ExceptionObject.ToString() + Environment.NewLine;
}
}
else
{
str = loggingEvent.LoggerName + "-" + loggingEvent.RenderedMessage + Environment.NewLine;
} if (!this.TextBox.InvokeRequired)
{
printf(str);
}
else
{
this.TextBox.BeginInvoke((MethodInvoker)delegate
{
if (!this.TextBox.IsHandleCreated)
{
return;
} if (this.TextBox.IsDisposed)
{
return;
}
printf(str);
});
}
} private void printf(string str)
{
//若是超过10行 则清楚
if (TextBox.Lines.Length > )
{
TextBox.Clear();
}
this.TextBox.AppendText(str);
}
}
}

  在Form中使用的时候的代码为:

//读取配置文件的信息
log1 = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //设置textbox打印日志
var logPattern = "%d{yyyy-MM-dd HH:mm:ss} --%-5p-- %m%n";
var textBox_logAppender = new TextBoxBaseAppender()
{
TextBox = this.textBox1,//注释后 就只有文件log
Layout = new PatternLayout(logPattern)
};
//相当于root标签下的 <appender-ref ref="LogFile" />
log4net.Config.BasicConfigurator.Configure(textBox_logAppender);

3、输出到Listview代码为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net.Appender;
using System.Windows.Forms;
using log4net.Core;
using log4net.Layout; namespace log4myself
{
public class ListViewBaseAppender : AppenderSkeleton
{
public ListView listView { get; set; } public ListViewBaseAppender()
{
} protected override void Append(LoggingEvent loggingEvent)
{
if (this.listView == null)
{
return;
} if (!this.listView.IsHandleCreated)
{
return;
} if (this.listView.IsDisposed)
{
return;
} var patternLayout = this.Layout as PatternLayout; var str = string.Empty;
if (patternLayout != null)
{
str = patternLayout.Format(loggingEvent); if (loggingEvent.ExceptionObject != null)
{
str += loggingEvent.ExceptionObject.ToString() + Environment.NewLine;
}
}
else
{
str = loggingEvent.LoggerName + "-" + loggingEvent.RenderedMessage + Environment.NewLine;
} if (!this.listView.InvokeRequired)
{
printf(str);
}
else
{
this.listView.BeginInvoke((MethodInvoker)delegate
{
if (!this.listView.IsHandleCreated)
{
return;
} if (this.listView.IsDisposed)
{
return;
} printf(str);
});
}
} private void printf(string str)
{
if (listView.Items.Count>)
{
listView.Items.Clear();
} ListViewItem item = new ListViewItem();
item.Text = str.ToString(); listView.BeginUpdate();
listView.Items.Add(item);
listView.Items[listView.Items.Count - ].EnsureVisible();//滚动到最后
listView.EndUpdate();
}
}
}

Demo 下载:http://download.csdn.NET/detail/sc6231565/9620527

原文链接:

c# log4net 日志输出到 本地文件 textbox listview DEMO

C#中使用Log4net日志输出到本地文件、Textbox或Listview的更多相关文章

  1. Tomcat控制台日志输出到本地文件

    记事本打开startup.bat文件,修改如下内容 “call “%EXECUTABLE%” start %CMD_LINE_ARGS%” 改为 call "%EXECUTABLE%&quo ...

  2. .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行)

    .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行) 遇到个诡异的问题,项目发布并寄宿到 IIS上后,Log4Net没有日志输出 1.原因分析 这不应该啊,所有的配置 ...

  3. 不让应用的日志输出到message文件中

    有时我们制定一个应用的日志输出到一个文件的时候例如: (百度了好久都百度不好,这里记录一下时间2015年12月7日16:28:39) local7.*                          ...

  4. .NET 扩展 官方 Logger 实现将日志保存到本地文件

    .NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...

  5. 如何在通用权限管理系统中集成log4net日志功能

    开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个 ...

  6. 使用log4net 日志输出到数据库MySQL

    使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...

  7. log4j根据包名 日志输出到不同文件中 , service层无法输出日志问题

    1. service 层因为要配置事务,使用了代理 <aop:config proxy-target-calss=''true"> <aop:pointcut id=&qu ...

  8. netcore中使用log4net日志

    第一.控制台程序中使用log4net  static void Main(string[] args) { ILoggerRepository repository = LoggerManager.C ...

  9. TOMCAT控制台日志输出到指定文件中

    1 .修改startup.bat第42行 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 为 call "%EXECUTABLE%&q ...

随机推荐

  1. MVC中使用SignaIR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  2. 验证码做得不错,有.net 版本 https://captcha.com/

    https://captcha.com/ https://captcha.com/demos/features/captcha-demo.aspx

  3. git将代码提交到远程分支(非主分支)

    一个仓库可以包含多个分支,有一个默认的主分支:master 若想提交代码至远程仓库的某个分支(非主分支) 先查看下本地分支以及远程分支:git branch -a 由本地分支(非主分支master)提 ...

  4. Servlet/JSP-04 JSP基础

    一. JSP概述 Servlet 是 Java 程序,可以在 Java 程序内部返回一段 HTML 代码(字符串形式)到浏览器,供浏览器解释展示. JSP 是一种脚本语言,在 HTML 内部通过嵌入 ...

  5. 关于 redis、memcache mongoDB 的对比

    from:http://yang.u85.us/memcache_redis_mongodb.pdf 从以下几个维度,对 redis.memcache.mongoDB 做了对比.1.性能都比较高,性能 ...

  6. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

  7. Java Hello World例子和添加按钮事件与功能

    新建android工程,然后默认“下一步”即可完成创建: 2.添加Button 3.在src的MainActivity.java添加以下红色代码 import android.support.v7.a ...

  8. PlaceHolder的两种实现方式

    placeholder属性是HTML5 中为input添加的.在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示. 如 <input typ ...

  9. JAVA构造函数(方法)与方法是啥意思

    成员方法必须有返回类型即使是没有返回,也要写上void 构造函数(方法)没有返回类型,而且和类名一样!一个类里面,一看就知道了譬如:public class Test{public Test(){} ...

  10. node js学习(二)——REPL(交互式解释器)

    1.简介 Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输 ...