网上很多配置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. EMC Documentum DQL整理(一)

    1.Get user SELECT * FROM dm_user WHERE r_is_group = 0   2.Get Group SELECT * FROM dm_group WHERE gro ...

  2. SQLHelp帮助类

    public readonly static string connStr = ConfigurationManager.ConnectionStrings["conn"].Con ...

  3. viso2010从mysql中导出ER图

    mysql connector 下载地址: http://dev.mysql.com/downloads/connector/odbc/5.1.html 首先机器要安装mysql-connector- ...

  4. ab 性能测试工具的使用(Web并发测试)

    1.下载 http://pan.baidu.com/s/1hrlAbI0 2.命令介绍 参数的介绍 n在测试会话中所执行的请求个数.默认时,仅执行一个请求. -c一次产生的请求个数.默认是一次一个. ...

  5. 单源最短路径算法——Dijkstra算法

    #include <stdio.h> #include <stdlib.h> #include <string.h> /* run this program usi ...

  6. 2-Fedora 17系统安装准备

    在安装Fedora 17系统之前应做好准备工作,这些准备工作包括了解安装系统的硬件要求,Linux系统磁盘分区方案和挂载目录以及制作安装引导盘 学习重点: 硬件要求 硬件兼容性 分区方案 学习内容: ...

  7. jquery图片时钟

    一.生成数字时钟 <script src="http://code.jquery.com/jquery-latest.js"></script> <s ...

  8. (转)linux下vi命令大全

    http://www.cnblogs.com/88999660/articles/1581524.html 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n ...

  9. 敲-PHP与MySQL,JSON

    hi 敲代码~ 1.php与mysql 5.4 修改界面 同样是界面和程序. 界面article.modify.php <?php require_once('../connect.php'); ...

  10. 用PS设计等高线效果的背景图片

    有些简单的单网页,如果利用等高线效果的背景图片,再配合合适的背景色,能达到绚丽的效果.如下图所示: 本文就介绍该等高线效果的背景图片是如何制作的.Follow Me!!!! 1.新建文档,尺寸:100 ...