使用log4net给项目添加日志功能
1,首先我们在项目中要添加log4net.dll的引用
,
2,然后我们要在配置文件中添加log4net相关的配置了,先创建一个名为log4net.appconfig的配置文件,如果项目中已经有了名为 app.config的默认配置文件我们在这写也是一样的。
3,app.config文件的默认内容如下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
</configuration>
4,然后我们添加configSections配置节
<configSections>
<!--子节点log4net-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
我们在其中添加了log4net子节点
5,然后我们再对log4net子节点进行配置
<log4net>
<!--(我们在这里添加)-->
</log4net>
先加一个root
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<level value="all" />
<appender-ref ref="ColoredConsoleAppender" /><!--控制台-->
<appender-ref ref="RollingLogFileAppender" /><!--滚动文件,自动记录最新日志-->
</root>
<root>中可以有三种元素分别是
appender-ref :要引用的appender的名字 例如上面的ColoredConsoleAppender指的是在控制台显示日志
level :<root>中最多只能有一个,只有在这个级别或者之上的事件才会被记录
param :可以有多个,用于设置一些参数
因为上面有两个appender,所以我们要对这两个appender进行配置
<!--输出方式输入文件-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="logs\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="100" />
<!--日志文件名是否是固定不变的-->
<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="%date [%thread] %-5level %logger [%property{NDC}] - %message%n" /><!--指定打印信息的具体格式-->
<!-- <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] (%file:%line) %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/> -->
</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>
<layout type="log4net.Layout.PatternLayout">
<!--日志显示格式-->
<conversionPattern value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] %l - %message%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<!--日志信息等级范围-->
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
每一个<appender>代表一种记录日志的方式,上面两个分别是"将日志信息输入到文件中"和"控制台前台显示日志" ,而appender下的param则是一些具体的规则。
<appender>有属性name 和 type 分别代表appender的名称和输出类型,这个是必须的 。 有元素appender-ref param filter layout
filter是过滤器,用于过滤appender输出的内容,上面用的过滤器种类为LevelRangeFilter 日志等级在指定范围内的事件才被记录
layout 是用于控制appender的输出格式的,一个appender只能有一个layout 最常用的格式是PatternLayout,参考上面。
mapping可以设置不同日志级别对应的颜色显示
6,常用的layout节点有:
%m(message) :输出的日志消息
%n(newline) :换行
%d(date) :输出当前语句运行的时刻
%r(runtime) :输出程序运行到执行当前语句时消耗的毫秒数
%t(thread) :当前语句所在的线程ID
%p(priority) :日志当前优先级,DEBUG ,INFO ,WARN等
%c(class) :当前日志对象的名称
%L :输出语句所在行号
%F :输出语句所在文件名
%-数字 :表示该项的最小长度,如果不够,则用空格填充
7,然而我们使用的时候其实可以写一个log4net辅助类,这样我们想在项目中使用就直接调用就好了
public class LogHelper
/// <summary>
/// 输出调试信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="ex">异常</param>
public static void Debug(Type t, Exception ex)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Debug("Debug", ex);
/// <summary>
/// 输出调试信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="msg">信息描述</param>
public static void Debug(Type t, string msg)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Debug(msg);
/// <summary>
/// 输出一般信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="msg">信息描述</param>
public static void Info(Type t, string msg)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Info(msg);
/// <summary>
/// 输出警告信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="ex">异常</param>
public static void Warn(Type t, Exception ex)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Warn("Warn", ex);
/// <summary>
/// 输出警告信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="msg">信息描述</param>
public static void Warn(Type t, string msg)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Warn(msg);
/// <summary>
/// 输出一般错误信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="ex">异常</param>
public static void Error(Type t, Exception ex)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error("Error", ex);
/// <summary>
/// 输出一般错误信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="msg">信息描述</param>
public static void Error(Type t, string msg)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error(msg);
/// <summary>
/// 输出致命错误信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="ex">异常</param>
public static void Fatal(Type t, Exception ex)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Fatal("Fatal", ex);
/// <summary>
/// 输出致命错误信息到日志
/// </summary>
/// <param name="t">类型</param>
/// <param name="msg">信息描述</param>
public static void Fatal(Type t, string msg)
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Fatal(msg);
我们在其他地方可以这样使用,比如在Connection类中和 ChannelMonitorViewModel类中这样
LogHelper.Info(typeof(Connection), "异常:" + e.ToString());
LogHelper.Info(typeof(ChannelMonitorViewModel), "开始通道监听");
8,别忘了在AssemblyInfo.cs文件中加入这一行,不然就会打印不了日志信息的。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
9,最后贴上整个配置文件的内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup>
<!--连接字符串设置-->
<connectionStrings>
<add name="MySQLDBConnection" connectionString="server=localhost;user id=root;password=xinyalong;database=recharge_card_system"/>
</connectionStrings>
<configSections>
<!--子节点log4net-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<level value="all" />
<appender-ref ref="ColoredConsoleAppender" />
<!--控制台-->
<appender-ref ref="RollingLogFileAppender" />
<!--滚动文件,自动记录最新日志-->
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--输出方式-->
<!--日志路径-->
<param name="File" value="logs\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="100" />
<!--日志文件名是否是固定不变的-->
<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">
<!--指定打印信息的具体格式-->
<!--例子:2019-05-27 16:54:49,249 [8] INFO lib60870.Connection [(null)] - 后台网络线程开始运行-->
<param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%n" />
<!-- <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] (%file:%line) %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/> -->
</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>
<!--设置布局格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] %l - %message%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
</log4net>
</configuration>
使用log4net给项目添加日志功能1,首先我们在项目中要添加log4net.dll的引用,2,然后我们要在配置文件中添加log4net相关的配置了,先创建一个名为log4net.appconfig的配置文件,如果项目中已经有了名为 app.config的默认配置文件我们在这写也是一样的。3,app.config文件的默认内容如下<?xml version=...
Log4net的优点
log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。程序运行过程中就能生成并输出日志信息而无需人工干预,可供开发人员尽快找到应用程序中的Bug。另外,日志信息可以输出到不同的地方。
Log4net的结构
log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及Layout(布局)
重点—网上教程项目中添加log4日志流程如下
1.项目中都会有一个工具类库,然后添加对log4net.dll的引用,再
一般对控制台输入的日志我们使用的Appender为ConsoleAppender,日志为白色文字。
当我们想到DEBUG,INFO,WARN,ERROR 每种日志设置一种颜色时我们需要将Appender改为ColoredConsoleAppender
然后增加相应的颜色配置
<appender name="ConsoleAppender" type=...
首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载
1、先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序。在程序的根目录下面,建立一个Libs文件夹,以便存放Log4Net的DLL文件。
2、进行一些简单的配置,先不讲配置文件的作用,大家照我写的输入。下面代码库的内容是在App.config文件中输入的,如果大家没有App.config文件,可以...
等级说明:Level级别:DEBUG <INFO<WARN<ERROR<FATAL <root>
<level value="INFO"/>
<appender-ref ref="RollingLogFileAppender"/>
<appender-ref ref=&quo
该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇。
比较流行的日志组件有以下四种,Topshelf都有相应的组件提供
log4net
NLog
serilog
Elmah
本篇文章主要介绍log4net的使用。
在使用Topshelf创建Windows服务中提到了当我们调试的时候Console会打印出如下的类似日志
Configur...
log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。
2、一个简单的使用实例
第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。
第二步:程序启动时读取log4net的配置文件。
如果是CS程序,在根目录的Program.cs中的Main方法中添加:
log4net.Config.XmlConfigurator.Configure();
如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:
log4net.Config.XmlConfigurator.Configure();
无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:
[assembly: log4net.Config .XmlConfigurator()]
也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。
第三步:修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web.config文件中,添加内容一样,这里不再列出。
App.config文件添加内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="testApp.Logging">
<level value="DEBUG"/>
</logger>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] "/>
<param name="Footer" value="[Footer] "/>
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
第四步:在程序使用。
log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器
log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log
这样就将信息同时输出到控制台和写入到文件名为“log-file.txt”的文件中,其中“log-file.txt”文件的路径是当前程序运行所在目录;也可以定义为绝对路径,配置如:
<param name="File" value="C:/log-file.txt" />就写入C盘根目录下log-file.txt文件中
前言用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。在项目中配置第一步:首先在项目中引用log4net.dll文件。第二步:在Web.config文件中进行添加configSections的节点
代码如下: <configSections> <section name=”log4net” type=”log4net.
之前都是用java开发,换成asp.net,没有实时的
日志输出监控,总是感觉很不方便,由于
项目中采用的
日志组件是
log4net,就直接写个小的基于控制台的udp客户端接收
log4net的
日志消息,嗯,这回方便多了。
log4net的udp配置
扩展RollingFileAppender实现Error级别的日志发送预警
public class CRollingFileAppender : RollingFileAppender
protected override void Append(log4net.Core.LoggingEvent loggingEvent)
NuGet引用:NLog
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
See https://github.com/nlog/nlog/wi
在设置字体和颜色时,分别使用FontDialog和ColorDialog类对他们进行封装。显示对话框只要调用类的ShowDialog()方法。下面是在文本框中的右击事件:
private void 字体ToolStripMenuItem_Click_1(object sender, EventArgs e)
FontDialog font1 = new
<groupId>ch.qos.
logback</groupId>
<artifactId>
logback-classic</artifactId>
<version>1.2.3</version>
<scope>compi