第一添加log4net.config,这里配置包括信息提示写入,错误信息写入,控制台消息展示

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<!--信息日志配置-->
<appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Info\info.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<!--错误日志配置-->
<appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Error\Err.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</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="%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>
<!--配置日志的级别,低于此级别的就不写到日志里面去 None>Fatal>ERROR>WARN>DEBUG>INFO>ALL-->
<level value="ALL" />
<appender-ref ref="infoAppender" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="infoAppender" />
</logger>
<logger name="logerror">
<level value="ERROR" />
<appender-ref ref="errorAppender" />
</logger>
</log4net>
</configuration>

第二将log4net.config注入到log4net中

//Winform窗体程序或者控制台程序,加载log4net配置文件,以下代码是写在Program类的Main方法中
class Program
{
  static void Main(string[] args)
  {
    //加载log4net配置文件
    var filepath = AppDomain.CurrentDomain.BaseDirectory + "log4net.config";
    log4net.Config.XmlConfigurator.Configure(new FileInfo(filepath));
  }
}
//Web程序,加载Log4net配置文件 ,以下代码是写在Global.cs类中,例如
protected void Application_Start(object sender, EventArgs e)
{
  var configPath = HttpContext.Current.Server.MapPath("~/log4net.config");
  log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
}

第三使用log4net SDK,去NUGET搜索log4net并加载到需要的项目中

/// <summary>
/// 打印日志
/// </summary>
public static class LogHelper
{
/// <summary>
/// 打印提示
/// </summary>
/// <param name="txt"></param>
public static void Info(string txt)
{
ILog log = log4net.LogManager.GetLogger("loginfo");
log.Info(txt);
} /// <summary>
/// 打印提示
/// </summary>
/// <param name="txt"></param>
public static void Info(string txt, Type type)
{
ILog log = log4net.LogManager.GetLogger(type);
log.Info(txt);
} /// <summary>
/// 打印错误
/// </summary>
/// <param name="msg"></param>
public static void Error(string msg)
{
ILog log = log4net.LogManager.GetLogger("logerror");
log.Error(msg);
}
/// <summary>
/// 打印错误
/// </summary>
/// <param name="msg"></param>
public static void Error(string msg, Exception ex)
{
ILog log = log4net.LogManager.GetLogger("logerror");
log.Error(msg, ex);
}
}

代码使用例子

protected void Page_Load(object sender, EventArgs e)
{
try
{
string a = "FF";
int b = Convert.ToInt32(a);
}
catch (Exception ex){
LogHelper.Error(ex.Message.ToString(), ex);
}
}

如果您觉得有用就直接拿去不用谢,axinno1

C# web程序,winform程序,控制台程序配置log4net,使用log4net的更多相关文章

  1. VS2013中,将Qt的GUI程序改为控制台程序

    在Visual studio 中创建QT GUI程序是不带Console的,但是调试时候常常需要查看打印信息,可以通过如下设置显示控制台 方法一.在vs中直接创建控制台程序方法二.当你通过设置你的应用 ...

  2. 分享一个客户端程序(winform)自动升级程序,思路+说明+源码

    做winform的程序,不管用没用过自动更新,至少都想过自动更新是怎么实现的. 我这里共享一个自动更新的一套版本,给还没下手开始写的人一些帮助,也希望有大神来到,给指点优化意见. 本初我是通过sock ...

  3. 【实验 1-2】编写一个简单的 UDP 服务器和 UDPP 客户端程序。程序均为控制台程序窗口。

    1.服务器 #include<winsock2.h> //包含头文件#include<stdio.h>#include<windows.h>#pragma comm ...

  4. 【实验 1-1】编写一个简单的 TCP 服务器和 TCP 客户端程序。程序均为控制台程序窗口。

    在新建的 C++源文件中编写如下代码. 1.TCP 服务器端#include<winsock2.h> //包含头文件#include<stdio.h>#include<w ...

  5. .NET CORE与Spring Boot编写控制台程序应有的优雅姿势

    本文分别说明.NET CORE与Spring Boot 编写控制台程序应有的“正确”方法,以便.NET程序员.JAVA程序员可以相互学习与加深了解,注意本文只介绍用法,不会刻意强调哪种语言或哪种框架写 ...

  6. C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印

    基础学习内容有 Console.WriteLine("要输出的内容");//往外输出内容的 Console.ReadLine(); //等待用户输入,按回车键结束,防止程序闪退 控 ...

  7. c# 第五节 第一个控制台程序、第一个桌面、快捷键、注释

    本节内容: 1:控制台程序的创建 2:第一个桌面程序 3:快捷键 4:注释 一.第一个控制台程序: 这就是控制台程序: 打开你的vs2015,按如下操作 二.第一个桌面程序 比如当我们删除一个东西会弹 ...

  8. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  9. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

随机推荐

  1. EL表达式自定义函数

    表达式语言除了可以使用基本的运算符外,还可以使用自定义函数.通过使用自定义函数,加强了表达式语言的功能. EL表达式函数,主要功能是完成对数据的修改,统一化格式: 步骤 1.开发函数处理类,处理类就是 ...

  2. MySQL show processlist 执行状态分析

           1.Sleep 通常代表资源未释放,如果是通过连接池,sleep状态应该恒定在一定数量范围内 实战范例:因前端数据输出时(特别是输出到用户终端)未及时关闭数据库连接,导致因网络连接速度产 ...

  3. opencv 卡尔曼滤波器例子,自己修改过

    一.卡尔曼滤波器的理论解释 http://blog.csdn.net/lindazhou2005/article/details/1534234(推荐) 二.代码中一些随机数设置函数,在opencv中 ...

  4. INIT: vesion 2.88 booting

    /***************************************************************************** * INIT: vesion 2.88 b ...

  5. Spring字符编码过滤器

    1 <filter> 2 <filter-name>characterEncodingFilter</filter-name> 3 <filter-class ...

  6. 转载 iir直接i型和直接ii型滤波器

    1.IIR滤波器构造           之前在介绍FIR滤波器的时候,我们提到过,IIR滤波器的单位冲击响应是无限的!用差分方程来表达一个滤波器,应该是下式这个样子的.                ...

  7. 十三、python沉淀之路--文件操作

    一.文件的读操作 例1 f = open('学习',encoding='utf-8') #首先要打开文件,不然直接读,是读不出来的 data = f.read() #read后的括号里不添加任何东西 ...

  8. 在web.config中配置httpHandlers节点是的说明

    <system.web> <httpHandlers> <add verb="*" path="*.lcj" type=" ...

  9. Oracle的闪回特性之恢复truncate删除表的数据

    Oracle的闪回特性之恢复truncate删除表的数据 SQL> show parameter flashback NAME                                 T ...

  10. JVM介绍(二)

    1 JVM简介 JVM是我们Javaer的最基本功底了,刚开始学Java的时候,一般都是从“Hello World”开始的,然后会写个复杂点class,然后再找一些开源框架,比如Spring,Hibe ...