log4net 在 winform当中的使用
二话不说首先通过NUGET导入

完成导入以后需要做一些配置,log4net的配置可以直接加入到App.config当中,也可以自己单独创建一个配置文件。
在App.config当中默认会包含一个startup区域。一般来说配置放在startup前面就可以。
log4net的配置分为两个模块一个是注册配置,如下面代码:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections>
另外还有一块是对应的配置信息:
<log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <param name="File" type="log4net.Util.PatternString" value="Log4Net.test" /> <!--是否是向文件中追加日志--> <param name="AppendToFile" value="true" /> <!--log保留天数--> <param name="MaxSizeRollBackups" value="10" /> <!--日志文件名是否是固定不变的--> <param name="StaticLogFileName" value="false" /> <!--日志文件名格式为:2008-08-31.log--> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <!--日志根据日期滚动--> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" /> </layout> </appender> <!-- 控制台前台显示日志 --> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <!-- 对不同的级别的日志按照不同的颜色在控制台展示--> <level value="Info" /> <foreColor value="Green" /> </mapping> <mapping> <level value="ERROR" /> <foreColor value="Red" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <root> <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --> <level value="all" /> <appender-ref ref="ColoredConsoleAppender" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net>
配置内容至少包括两个模块一个是appender 另一个是root,并且里边的配置要互相呼应才可以准确的完成配置。
目前常用的log4net支持的介质分类有一下
RollingFileAppender 文件日志
AdoNetAppender 数据库日志
ColoredConsoleAppender 控制台日志
到这里为止配置工作计算结束。
在完成配置以后需要写一个日志辅助类具体代码如下
public class LogHelper { public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("信息日志"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("错误日志"); public static void SetConfig() { log4net.Config.XmlConfigurator.Configure(); } public static void SetConfig(FileInfo configFile) { log4net.Config.XmlConfigurator.Configure(configFile); } public static void Info(string str) { loginfo.Info(str); } public static void Error(string str) { loginfo.Error(str); logerror.Error(str); } public static void Error(string str, Exception e) { logerror.Error(e.ToString(), e); //StackTrace } public static void Warn(string str) { loginfo.Warn(str); logerror.Warn(str); } }
其实网上可以找到很多代码。我们这里主要用于演示就简单写一下。
在Program.cs 当中注册配置
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { log4net.Config.XmlConfigurator.Configure(); BindExceptionHandler(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } /// <summary> /// 绑定程序中的异常处理 /// </summary> private static void BindExceptionHandler() { //设置应用程序处理异常方式:ThreadException处理 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //处理UI线程异常 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); //处理未捕获的异常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledExceptionEventHandler); } private static void Application_UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e) { LogHelper.Error("程序异常", e.ExceptionObject as Exception); } private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { LogHelper.Error("程序异常", e.Exception as Exception); } }
log4net.Config.XmlConfigurator.Configure(); 是注册配置信息
BindExceptionHandler();是一个自定义函数
主要功能就是捕捉到异常,然后如果log4net来记录日志信息。
以上就是主要的配置和代码了。
演示部分
演示过程就准备一个按钮

代码如下:
private void button1_Click(object sender, EventArgs e) { LogHelper.Info("这里用户点击了按钮"); int a = 10; int b = 0; int c = a / b; }
这里演示两种情况一种是 LogHelper.Info("这里用户点击了按钮");
主动记录日志,另一种是写了一个除零错误。
我们目前演示程序当中写了两个介质,一个是控制台另一个是日志文件,具体结果如下
控制台显示的日志

日志文件显示的日志

到这里为止在winform上使用log4net的完整过程都已经演示到了。
如有不足欢迎指正

浙公网安备 33010602011771号