网上很多配置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. HtmlHelper用法大全

    HTML扩展类的所有方法都有2个参数: 以textbox为例子 public static string TextBox( this HtmlHelper htmlHelper, string nam ...

  2. Cygwin VS MinGW

    首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC.  Cygwin则是全面模拟了Linux的接口 ...

  3. WPF学习之路(七)应用程序和窗口

    手动创建应用程序 1.创建Empty Project 2.添加引用 3.添加 ManualApp.cs 并添加下面的代码 [STAThread] public static void Main() { ...

  4. nexus搭建maven私服

    下载nexus 首先,从以下地址下载nexus: http://www.sonatype.com/download-oss-sonatype 选择下载nexus-2.13.0-01-bundle.ta ...

  5. 十五天精通WCF——第十一天 如何对wcf进行全程监控

    说点题外话,我们在玩asp.net的时候,都知道有一个叼毛玩意叫做“生命周期”,我们可以用httpmodule在先于页面的page_load中 做一些拦截,这样做的好处有很多,比如记录日志,参数过滤, ...

  6. Use Excel Pivot Table as a BI tool

    Normally, we have created a table, view in database or cube in SSAS, user can use Excel as a BI tool ...

  7. redis安装及基础操作(1)

    ============================================================= 编译安装 0.环境 Linux:centos6.5 redis:3.0.5 ...

  8. poj 2104 K-th Number(可持久线段树)

    K-th Number 持久化:http://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html 结构:http://www.docin.c ...

  9. 《Inside UE4》-2-GamePlay架构(一)Actor和Component

    <Inside UE4>-2-GamePlay架构(一)Actor和Component     <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...

  10. extra增强延迟加载

    这种配置和配置为lazy=true是一样的,但它的好处在于调用size/contains等方法时,并不查询整个集合的数据,而是发送一条sql语句来处理,只有真正在使用时才全部去查询整个集合