C#中使用Log4net日志输出到本地文件、Textbox或Listview
网上很多配置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的更多相关文章
- Tomcat控制台日志输出到本地文件
记事本打开startup.bat文件,修改如下内容 “call “%EXECUTABLE%” start %CMD_LINE_ARGS%” 改为 call "%EXECUTABLE%&quo ...
- .Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行)
.Net Core IIS下无Log4Net日志输出,命令行下却有(dotnet运行) 遇到个诡异的问题,项目发布并寄宿到 IIS上后,Log4Net没有日志输出 1.原因分析 这不应该啊,所有的配置 ...
- 不让应用的日志输出到message文件中
有时我们制定一个应用的日志输出到一个文件的时候例如: (百度了好久都百度不好,这里记录一下时间2015年12月7日16:28:39) local7.* ...
- .NET 扩展 官方 Logger 实现将日志保存到本地文件
.NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...
- 如何在通用权限管理系统中集成log4net日志功能
开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个 ...
- 使用log4net 日志输出到数据库MySQL
使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...
- log4j根据包名 日志输出到不同文件中 , service层无法输出日志问题
1. service 层因为要配置事务,使用了代理 <aop:config proxy-target-calss=''true"> <aop:pointcut id=&qu ...
- netcore中使用log4net日志
第一.控制台程序中使用log4net static void Main(string[] args) { ILoggerRepository repository = LoggerManager.C ...
- TOMCAT控制台日志输出到指定文件中
1 .修改startup.bat第42行 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 为 call "%EXECUTABLE%&q ...
随机推荐
- HtmlHelper用法大全
HTML扩展类的所有方法都有2个参数: 以textbox为例子 public static string TextBox( this HtmlHelper htmlHelper, string nam ...
- Cygwin VS MinGW
首先MingW和cygwin都可以用来跨平台开发. MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC. Cygwin则是全面模拟了Linux的接口 ...
- WPF学习之路(七)应用程序和窗口
手动创建应用程序 1.创建Empty Project 2.添加引用 3.添加 ManualApp.cs 并添加下面的代码 [STAThread] public static void Main() { ...
- nexus搭建maven私服
下载nexus 首先,从以下地址下载nexus: http://www.sonatype.com/download-oss-sonatype 选择下载nexus-2.13.0-01-bundle.ta ...
- 十五天精通WCF——第十一天 如何对wcf进行全程监控
说点题外话,我们在玩asp.net的时候,都知道有一个叼毛玩意叫做“生命周期”,我们可以用httpmodule在先于页面的page_load中 做一些拦截,这样做的好处有很多,比如记录日志,参数过滤, ...
- 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 ...
- redis安装及基础操作(1)
============================================================= 编译安装 0.环境 Linux:centos6.5 redis:3.0.5 ...
- poj 2104 K-th Number(可持久线段树)
K-th Number 持久化:http://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html 结构:http://www.docin.c ...
- 《Inside UE4》-2-GamePlay架构(一)Actor和Component
<Inside UE4>-2-GamePlay架构(一)Actor和Component <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...
- extra增强延迟加载
这种配置和配置为lazy=true是一样的,但它的好处在于调用size/contains等方法时,并不查询整个集合的数据,而是发送一条sql语句来处理,只有真正在使用时才全部去查询整个集合